这非常简单,但我想我以前从来没有遇到过它。我有一个Page
模型hasMany Comment
。我想拉出至少有一条评论的所有页面,但是删除没有评论的页面。当我看着它时,我意识到我不知道该怎么做。我想我可以使用ad hoc连接,但我宁愿使用Containable,如果可能的话。我已尝试在not null
条件下测试Comment
以及其他一些不太可行的事情,但看起来这应该是可行的。
我现在得到的是所有页面,其中一些页面记录中有一个空的Comment
成员。如果我能这样做的话,可以跳过所有额外的残余物。
我的find
电话:
$pages = $this->Folder->Page->find(
'all',
array(
'contain' => array(
'Comment' => array(
'order' => array( 'Comment.modified DESC' ),
),
'Folder' => array(
'fields' => array( 'Folder.id' ),
),
),
'conditions' => array(
'Folder.group_id' => $id,
),
)
);
感谢。
答案 0 :(得分:3)
除了ad-hoc联接之外,您还有其他几种方法可供使用:
'Page.has_comment' => 1
添加到您的条件中。使用DISTINCT page_id为评论运行您的查询。
$comments = $this->Folder->Page->Comment->find('all', array(
'conditions' => array('DISTINCT Comment.page_id'
'contain' => array(
'Page' => array(
'Folder'
)
)
);
首先从评论表中获取一组不同的页面ID。
$page_ids = $this->Folder->Page->Comment->find('list', array(
'fields' => array('id', 'page_id'),
'conditions' => array('DISTINCT Comment.page_id'),
);
$pages = $this->Folder->Page->find('all', array(
'conditions' => array('Page.id' => $page_ids),
'contain' => array(
...
)
);