Cakephp按联接结果计数排序,包括不存在的条目
我的问题是,我想为一篇文章的评论计票。 因此,用户可以投票给一篇文章的好评论,我想首先列出投票最多的评论。我现在遵循的方法是有效的,有限制的,只列出已经投票的选票。未在联接表中列出的(注释\用户)将被忽略。 为了更清楚一点,我的表是用户、评论和HABTM联接表评论(别名投票) 我目前的做法是:Cakephp按联接结果计数排序,包括不存在的条目,cakephp,join,count,has-and-belongs-to-many,Cakephp,Join,Count,Has And Belongs To Many,我的问题是,我想为一篇文章的评论计票。 因此,用户可以投票给一篇文章的好评论,我想首先列出投票最多的评论。我现在遵循的方法是有效的,有限制的,只列出已经投票的选票。未在联接表中列出的(注释\用户)将被忽略。 为了更清楚一点,我的表是用户、评论和HABTM联接表评论(别名投票) 我目前的做法是: public function commentsOfArticle($articleId){ $options['group'] = array('Comment.articleId');
public function commentsOfArticle($articleId){
$options['group'] = array('Comment.articleId');
$options['conditions'][] = array('Comment.article_id' => $articleId);
$options['joins'][] = array('table' => 'comments_users',
'alias' => 'Votes',
'type' => 'inner',
'conditions' => array(
'Votes.comment_id = Comment.id'
));
$options['fields'] = array('Comment.*','COUNT(Votes.user_id) AS votes');
$options['contain'] = array(.......);
$options[ 'order'] = array('votes DESC');
return $this->find('all',$options);
}
我想关键是
$options['fields'] = array('Comment.*','COUNT(Votes.user_id) AS votes');
有没有可能收到那些在我的结果末尾投票表中没有条目的评论,只要投票=0?尝试将
连接从内部更改为左侧
$options['joins'][] = array('table' => 'comments_users',
'alias' => 'Votes',
'type' => 'LEFT',
'conditions' => array(
'Votes.comment_id = Comment.id'
));