我的问题是,我想计算一篇文章的评论。 因此,用户可以赞成文章的好评,我想首先列出评分最多的评论。我现在遵循的方法是限制,只列出已经投票的投票。那些未在连接表中列出的(comments_users)将被忽略。 为了使我的表格更清晰,用户,评论和HABTM联接表 comments_users (别名投票)
我目前的做法是:
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?
答案 0 :(得分:1)
尝试将JOIN
从内部更改为左
$options['joins'][] = array('table' => 'comments_users',
'alias' => 'Votes',
'type' => 'LEFT',
'conditions' => array(
'Votes.comment_id = Comment.id'
));