1

私のコメントの表は次のようになります。

| 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 ステートメントを実行することは可能ですか (それも答えになる可能性があります)。

4

1 に答える 1