使用NotORM在PHP中获取文章的总评论
我的建议表如下所示:使用NotORM在PHP中获取文章的总评论,php,notorm,Php,Notorm,我的建议表如下所示: | ID | article_id | user_id | ... |-------------------------------| | 1 | 1 | 1 | ... | 2 | 2 | 2 | ... | 3 | 2 | 1 | ... | 4 | 3 | 2 | ... 我需要获得评论最多的前5篇文章。当我在SQL控制台中使用此语句时,选
| ID | article_id | user_id | ...
|-------------------------------|
| 1 | 1 | 1 | ...
| 2 | 2 | 2 | ...
| 3 | 2 | 1 | ...
| 4 | 3 | 2 | ...
我需要获得评论最多的前5篇文章。当我在SQL控制台中使用此语句时,选择“article\u id”,按“article\u id”从“comments”组按“article\u id”顺序按“total”限制5将(*)计为“total”,然后我得到了我想要的一切。但我需要用NotORM来做这件事,而这正是我努力的方向。这是我获取这些文章的功能:
function getBestActive() {
$items = $this->db->comments()
->select("article_id, count(*) as 'total'")
->order("total DESC")
->limit(5);
$articles = array();
foreach($items as $item) {
$article = $this->db->article('id', $item['article_id'])->fetch();
$article['img'] = "thumb/{$article['uri']}.jpg";
$article['comments'] = $item['total'];
$articles[] = $article;
}
return $articles;
}
但它返回的数组只有1篇文章(评论最多),我需要的文章最多5篇。或者是否可以使用NotORM执行自定义SQL语句(这也可能是答案)?哦,现在我明白了。我忘了添加group()
函数。因此,使用此选项,一切工作正常:
$items = $this->db->comments()
->select("article_id, count(*) as 'total'")
->group("article_id")
->order("total DESC")
->limit(5);
哦,现在我明白了。我忘了添加group()
函数。因此,使用此选项,一切工作正常:
$items = $this->db->comments()
->select("article_id, count(*) as 'total'")
->group("article_id")
->order("total DESC")
->limit(5);