2012-12-02 92 views
1

我的CakePHP應用程序中有兩個模型:NewsArticleImage。新聞文章可以擁有並屬於許多圖像,但圖像不是必需的。查找CakePHP中至少有一個HABTM相關記錄的記錄

如何在我的應用程序中找到第一篇新聞文章,其中至少有一個關聯的圖像記錄,以便丟棄任何沒有相關圖像記錄的新聞報道?

回答

2

您必須使用INNER JOIN(請參閱Joins in CakePHP)根據存在關聯的HABTM項目來限制find()。

1

使用連接非常容易,只需使用RIGHT JOIN連接HABTM表,因此只有具有HABTM記錄的行纔會被採集,這是我的例子https://www.flylogs.com,我只是想要至少在飛行員和他們的飛行員名稱:

$this->paginate = array(
    'contain' => array('Pilot.name'), 
    'group' => 'Aircraft.id', 
    'joins' => array(
     array(
      'table' => 'pilots_aircraft', 
      'alias' => 'PilotAircraft', 
      'type' => 'right', 
      'conditions' => 'Aircraft.id = PilotAircraft.aircraft_id' 
     ) 
    ), 
); 

$aircraft = $this->paginate('Aircraft'); 

重要組clausule,如果沒有說明,它會聚集一排各試點重複的飛機!

+0

太棒了!對於代碼示例也非常有用。不幸的是,我已經授予了選擇的答案,所以我能做的最好的是給你一個投票。 –

相關問題