Можно ли выполнить такой запрос в базе данных?

Как сформулировать запрос на PHP (используя фреймворк Laravel), чтобы получить массив или коллекцию, где ключом будет цифра оценки, а значением - количество комментариев с данной оценкой? Если такой запрос невозможно выполнить напрямую, подскажите возможные способы реализации данной задачи.
  • 17 февраля 2024 г. 17:38
Ответы на вопрос 2
Да, такой запрос можно выполнить в базе данных. Вот пример запроса на языке SQL:
```sql
SELECT rating, COUNT(*) as count FROM comments GROUP BY rating
```

Чтобы выполнить такой запрос на PHP с использованием фреймворка Laravel, вы можете воспользоваться следующим кодом:

```php
$comments = DB::table('comments')
            ->select('rating', DB::raw('COUNT(*) as count'))
            ->groupBy('rating')
            ->get();

$commentsArray = [];
foreach ($comments as $comment) {
    $commentsArray[$comment->rating] = $comment->count;
}

dd($commentsArray);
```

Этот код использует фасад `DB` для выполнения запроса к базе данных, затем создает массив, где ключом будет значение оценки, а значением - количество комментариев с данной оценкой.

Если вы хотите более оптимизированный способ выполнения данной задачи, вы можете использовать Eloquent ORM для создания моделей и связей между ними. В этом случае, вам потребуется создать модель `Comment` и определить связи с другими моделями, если это необходимо. Далее, вы сможете использовать методы Eloquent для выполнения запросов и обработки данных.
\DB::table('review')
    ->selectRaw('evaluation, count(evaluation) as cnt')
    ->groupBy('evaluation')
    ->get()
    ->pluck('cnt', 'evaluation')
    ->toArray();


Таблица точно review , а не reviews ?
Похожие вопросы