Cakephp按连接结果计数顺序,包括不存在的条目

时间:2014-12-03 17:57:19

标签: cakephp join count has-and-belongs-to-many

我的问题是,我想计算一篇文章的评论。 因此,用户可以赞成文章的好评,我想首先列出评分最多的评论。我现在遵循的方法是限制,只列出已经投票的投票。那些未在连接表中列出的(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?

1 个答案:

答案 0 :(得分:1)

尝试将JOIN内部更改为

$options['joins'][] = array('table' => 'comments_users',
    'alias' => 'Votes',
    'type' => 'LEFT',
    'conditions' => array(
        'Votes.comment_id = Comment.id'
    ));