我的CakePHP應用程序中有兩個模型:NewsArticle
和Image
。新聞文章可以擁有並屬於許多圖像,但圖像不是必需的。查找CakePHP中至少有一個HABTM相關記錄的記錄
如何在我的應用程序中找到第一篇新聞文章,其中至少有一個關聯的圖像記錄,以便丟棄任何沒有相關圖像記錄的新聞報道?
我的CakePHP應用程序中有兩個模型:NewsArticle
和Image
。新聞文章可以擁有並屬於許多圖像,但圖像不是必需的。查找CakePHP中至少有一個HABTM相關記錄的記錄
如何在我的應用程序中找到第一篇新聞文章,其中至少有一個關聯的圖像記錄,以便丟棄任何沒有相關圖像記錄的新聞報道?
您必須使用INNER JOIN(請參閱Joins in CakePHP)根據存在關聯的HABTM項目來限制find()。
使用連接非常容易,只需使用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,如果沒有說明,它會聚集一排各試點重複的飛機!
太棒了!對於代碼示例也非常有用。不幸的是,我已經授予了選擇的答案,所以我能做的最好的是給你一個投票。 –