0

我在与 CakePHP HABTM 的关系上有点挣扎,我在尝试做一个看似简单的任务时遇到了困难。我有许多营地和许多新闻项目。每个 NewsItem 都可能与任何阵营相关,因此当用户创建 NewsItem 时,他们会检查该项目用于哪些阵营。这就是想法。

所以...

我想在我的 NewsItems 视图中加入一些营地过滤。换句话说,我想查看与营地“A”和营地“B”相关的所有新闻项目。

向“查找”和“分页”功能添加条件就像一个魅力。

然而...

如果一个 NewsItem 属于多个 Camp,它会在列表中出现多次。因此,当我告诉 find 给我属于“A”阵营和“B”阵营的所有 NewsItems 时,属于“A”阵营和“B”阵营的 NewsItem 将出现两次。

调试查询如下所示:

选择NewsItemid, NewsItem. user_id, NewsItem. heading, NewsItem. body, NewsItem. modified, User. first_nameFROM news_itemsAS NewsItemLEFT JOIN usersAS UserON ( NewsItem. user_id= User. id) LEFT JOIN camps_news_itemsAS CampsNewsItemON ( CampsNewsItem. news_item_id= NewsItem. id) WHERE CampsNewsItemcamp_id在 (1, 5) 中排序NewsItemmodified描述限制 10

选择Campid, Camp. name, Camp. created, Camp. modified, CampsNewsItem. camp_id, CampsNewsItem. news_item_idcampsAS CampJOIN camps_news_itemsAS CampsNewsItemON ( CampsNewsItem. news_item_idIN (6, 6, 7, 8) AND CampsNewsItem. camp_id= Camp. id) WHERE 1 = 1

php 代码如下所示:

$camp_ids = array(1, 3, 6, 10);
$conditions = array('CampsNewsItem.camp_id' => $camp_ids);
    
$params['conditions'] = $conditions;
$this->NewsItem->bindModel(array('hasOne' => array('CampsNewsItem')));
$news_items = $this->NewsItem->find('all', $params);

感谢您的任何见解!

4

1 回答 1

2

Try this:

$params['group'] = array('NewsItem.id');
于 2010-02-19T04:00:48.987 回答