【发布时间】: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 @ FROMnews_itemsASNewsItemLEFT JOINusersASUserON (NewsItem.user_id=User.id) LEFT JOINcamps_news_itemsAScamps_news_itemsASid.news_item_id=NewsItem.id) WHERECampsNewsItem.camp_idIN (1, 5) ORDER BYNewsItem.modifieddesc LIMIT 10选择
Camp.id,Camp.name,Camp.created,Camp.modified,CampsNewsItem.@9876546360@.@9876546361@.@89 @ FROMcampsASCampJOINcamps_news_itemsASCampsNewsItemON (CampsNewsItem.news_item_idIN (6, 6, 7, 8) ANDCampsNewsItem.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