1

我的 CakePHP 应用程序中有两个模型:NewsArticleImage. 一篇新闻文章可以拥有并属于许多图像,但图像不是必需的。

如何在我的应用程序中找到第一个具有至少一个关联图像记录的新闻文章,以便丢弃没有相关图像记录的任何新闻文章?

4

2 回答 2

2

您必须使用 INNER JOIN(请参阅CakePHP 中的联接)来根据关联的 HABTM 项的存在来限制 find()。

于 2012-12-02T20:24:00.160 回答
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');

重要的分组条款,如果没有说明,它将为每个飞行员重复飞机聚集一排!

于 2014-04-29T10:57:44.480 回答