2012-12-02 54 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

太棒了!对于代码示例也非常有用。不幸的是,我已经授予了选择的答案,所以我能做的最好的是给你一个投票。 –

相关问题