私のコメントの表は次のようになります。
| ID | article_id | user_id | ...
|-------------------------------|
| 1 | 1 | 1 | ...
| 2 | 2 | 2 | ...
| 3 | 2 | 1 | ...
| 4 | 3 | 2 | ...
そして、コメント数が最も多い上位 5 つの記事を取得する必要があります。このステートメントを SQL consoleSELECT 'article_id', count(*) as 'total' FROM 'comments' GROUP BY 'article_id' ORDER BY 'total' LIMIT 5
で使用すると、必要なものがすべて得られます。しかし、私はこれを 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 ステートメントを実行することは可能ですか (それも答えになる可能性があります)。