CakePHP和HABTM标记过滤

CakePHP和HABTM标记过滤,cakephp,filtering,has-and-belongs-to-many,Cakephp,Filtering,Has And Belongs To Many,我正在为CakePHP-HABTM关系绞尽脑汁,我一直在努力完成一项看似简单的任务。我有很多营地和新闻。每个新闻项目都可能与任何营地相关,因此当用户创建新闻项目时,他们会检查该项目用于哪个营地。这就是我的想法 所以 我想在我的NewsItems视图中加入一些营地过滤。换言之,我希望看到与“A”营和“B”营相关的所有新闻 向“find”和“paginate”函数添加条件就像一个符咒 然而 如果一个新闻项目属于多个阵营,它会在列表中出现多次。因此,当我告诉find给我所有属于Camp“A”和Camp

我正在为CakePHP-HABTM关系绞尽脑汁,我一直在努力完成一项看似简单的任务。我有很多营地和新闻。每个新闻项目都可能与任何营地相关,因此当用户创建新闻项目时,他们会检查该项目用于哪个营地。这就是我的想法

所以

我想在我的NewsItems视图中加入一些营地过滤。换言之,我希望看到与“A”营和“B”营相关的所有新闻

向“find”和“paginate”函数添加条件就像一个符咒

然而

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

调试查询如下所示:

$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);
选择<代码>新闻项目<代码>id<代码>,<代码>新闻项目<代码>用户id<代码>,<代码>新闻项目<代码>标题<代码>,<代码>新闻项目<代码>正文<代码>,<代码>新闻项目<代码>修改<代码>,
User
first\u name
FROM
news\u items
AS
news items
usersAS
User
ON(
NewsItem
User id
id
)左侧加入
camps\u news\u items
AS
CampsNewsItem
ON(
CampsNewsItem
news\u item\u id
=
NewsItem
id
)其中
CampsNewsItem
camp\u id
NewsItem
修改
说明限制10

选择
Camp
id
Camp
name
Camp
创建的
Camp
修改的
CampsNewsItem
CampsNewsItem
news\u item\u id
作为
camps
加入
camps\u项目
CampsNewsItem
ON(
CampsNewsItem
news\u item\u id
IN(6,6,7,8)和
CampsNewsItem
camp\u id
id
)其中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);
感谢您的帮助!

尝试以下方法:

$params['group'] = array('NewsItem.id');

你知道如何让它与paginate助手一起正常工作吗?