【问题标题】:CakePHP and HABTM Tag FilteringCakePHP 和 HABTM 标签过滤
【发布时间】:2010-02-19 12:00:48
【问题描述】:

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

所以...

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

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

不过……

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

调试查询如下所示:

选择NewsItem.id, NewsItem.user_id, NewsItem.heading, NewsItem.body, NewsItem.@9876543321@.@9876543321@.@89 @ FROM news_items AS NewsItem LEFT JOIN users AS User ON (NewsItem.user_id = User.id) LEFT JOIN camps_news_items AS camps_news_items AS id .news_item_id = NewsItem.id) WHERE CampsNewsItem.camp_id IN (1, 5) ORDER BY NewsItem.modified desc LIMIT 10

选择Camp.id,Camp.name,Camp.created,Camp.modified,CampsNewsItem.@9876546360@.@9876546361@.@89 @ FROM camps AS Camp JOIN camps_news_items AS CampsNewsItem ON (CampsNewsItem.news_item_id IN (6, 6, 7, 8) AND CampsNewsItem.camp_id@ = Camp。 987654372@) 其中 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);

感谢您的任何见解!

【问题讨论】:

    标签: cakephp filtering has-and-belongs-to-many


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 知道如何让它与分页助手一起正常工作吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多