@atachrus

Как отобразить в результате запроса количество записей при группировки groupBy?

Задача из таблицы выбрать количество записей за определенный год, с группировкой по месяцам.
Не пойму где указать count(), что бы выводились не записи, а только подсчиталось их количество.

$items = MyModel::whereYear('created_at', '2021')
    ->get()
    ->groupBy(function($events) {
        return Carbon::parse($events->created_at)->format('m');
    });

Сейчас выводится вот так
{
   "11":[
      {
         "id":4,
         "type":1,
         "manager_id":6,
         "order_id":2341,
         "created_at":"2021-11-14T21:02:55.000000Z",
         "updated_at":null
      }
   ],
   "12":[
      {
         "id":2,
         "type":1,
         "manager_id":1,
         "order_id":2345,
         "created_at":"2021-12-14T21:02:55.000000Z",
         "updated_at":null
      },
      {
         "id":3,
         "type":1,
         "manager_id":3,
         "order_id":2344,
         "created_at":"2021-12-10T21:02:55.000000Z",
         "updated_at":null
      }
   ]
}
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
@jazzus
$items = DB::table('table')
    ->whereYear('created_at', 2021)
    ->selectRaw('month(created_at) month, count(*) count')
    ->groupBy('month')
    ->get();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AmdY
@AmdY
PHP и прочие вебштучки
Видимо, вы не очень понимаете что делаете. Нужно сразу делать groupBy, а затем вытаскивать данные из таблицы вызывая get(). Почитайте документацию, там и про count есть и разберетесь как работает Eloquent
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы