我有两个表主题和帖子。关系:主题有很多帖子。在这两个表中,都有一个状态字段(Y,N)来缓和内容。在我的页面中,我想列出所有未经审核的主题,其中至少有一个帖子状态为N或主题状态本身为N.是否可以在cakephp2.0中使用find功能。我正在使用可包含的行为。
我也需要应用分页。
答案 0 :(得分:1)
如果我理解正确,你可以使用:
$conditions => array ('OR' => array ('Topic.status' => 'N', 'Post.status' => 'N'));
答案 1 :(得分:1)
好吧,我还没有测试过,但是后续工作
$this->recursive = -1; //necessary to use joins
$options['joins'] = array(
'table' => 'posts',
'alias' => 'Post',
'type' => 'left',
'conditions' => array('Topic.id = Post.topic_id', 'Post.status = N') //updated code
);
$options['group'] = array('Topic.id HAVING count('Topic.id') >= 1 OR Topic.status = N');
$this->Topic->find('all', $options);
答案 2 :(得分:1)
这是一个解决方案:
这样的事情:
# TopicsController.php
$ids = $this->Topic->Post->find('list', array(
'fields' => array('Post.topic_id')
'conditions' => array(
'OR' => array(
'Post.status' => 'N',
'Topic.status' => 'N',
)
)
));
$this->paginate = array(
'conditions' => array('Topic.id' => (array)$ids),
'order' => array('Topic.created' => 'DESC')
);
$topics = $this->paginate('Topic');
由于您正在搜索Posts模型,CakePHP将加入父主题数据,您可以按两种状态进行过滤。