我的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,如果没有说明,它会聚集一排各试点重复的飞机!
太棒了!对于代码示例也非常有用。不幸的是,我已经授予了选择的答案,所以我能做的最好的是给你一个投票。 –