我尝试了不同的连接类型,但不知道应该使用哪种类型。我想计算每篇文章的评论数。
$select = $this->_db->select()
->from($this->_name)
->joinLeft('categories', 'categories.cat_id = ' . $this->_name . '.category', array('category_name' => 'name'))
->joinLeft('comments', 'comments.post_id = ' . $this->_name. '.post_id', array('num_comments' => 'COUNT(*)'))
->group($this->_name.'.post_id')
->limit(3)
->order("pubDate DESC");
if($category_id > 0) $select->where("category = ?", $category_id);
if($last_pub_date > 0) $select->where("$this->_name.pubDate < ?", $last_pub_date);
我也将这种方法用于我的 Twitter 之类的分页,因此$last_pub_date
也是如此。看起来不错,joinLeft()
但当然,如果文章查询没有评论,则获取计数为 1 而不是 0。我尝试使用其他连接类型,但如果没有评论,则不会提取整行或$this->_db->order("pubDate DESC")
无法正常工作。我也尝试过使用子查询,但我不确定我是否按原样写了它。