我正在努力更好地了解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模式。我怎么能这样做?
答案 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]');
我希望这对你有所帮助。