CodeIgniter - 计数行活动记录联合

时间:2015-12-08 18:27:08

标签: php codeigniter activerecord

我正在努力更好地了解CI的运作方式。

这是我的第一张表 app_news

id / name

我的第二个是 app_news_comments

id / id_news / comment

我用来显示新闻信息的模型是:

public function get_news($where = array()) {
    return $this->db->select('*')
        ->from('app_news')
        ->where($where)
        ->get()
        ->result();
}

我用来计算新闻评论的模型是:

public function count_comment($id_news) {

    return (int) $this->db->where(array('id_news' => $id_news)
        ->count_all_results('app_news_comments');

}

我的第一个解决方案是在我的视图上打印一个foreach并将 count_comment 函数放在循环中,以便计算我有多少注释但是我不尊重MVC模式。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

获取该信息的最佳方式是使用此查询:

SELECT 
app_news.id,
app_news.name,
COUNT(app_news_comments.id)
FROM app_news_comments
JOIN app_news ON app_news_comments.id_news = app_news.id
GROUP BY app_news_comments.id_news

因此,您需要使用Codeigniter上的Active Record创建查询,或者您可以直接添加,因为Codeigniter上的Active Record有一些限制。 但是,您可以在Codeigniter上使用这种方式来创建查询:

$this->db->select('[YOUR FIELDS AND COUNT]', FALSE)
         ->from('app_news_comments') .... etc

并直接添加查询:

$this->db->query('[QUERY HERE]');

我希望这对你有所帮助。