Получить общее количество комментариев статьи в PHP с NotORM

Моя таблица комментариев выглядит так:

| ID | article_id | user_id | ...
|-------------------------------|
|  1 |      1     |    1    | ...
|  2 |      2     |    2    | ...
|  3 |      2     |    1    | ...
|  4 |      3     |    2    | ...

И мне нужно получить 5 лучших статей с наибольшим количеством комментариев. Когда я использую это утверждение в консоли SQL SELECT '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 статей. Или можно выполнить пользовательский оператор SQL с помощью NotORM (это тоже может быть ответом)?

1

Решение

Ох, теперь я вижу. Я забыл добавить group() функция. Таким образом, с помощью этого выбора все работает:

$items = $this->db->comments()
->select("article_id, count(*) as 'total'")
->group("article_id")
->order("total DESC")
->limit(5);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]