Как сгруппировать записи по году и месяцу? laravel - PullRequest
0 голосов
/ 13 февраля 2020

Я уже был на этой ссылке , но в моем случае она другая.

У меня есть запись с столбцом created_at. Моя цель - группировать записи по годам, и внутри каждого года записи также должны группироваться по месяцам.

Мои ожидания :

enter image description here


Я пробовал этот код ниже, но он работает только для годовых данных.

$records = \App\VehicleRental::query()
    ->where('operator_id', $operator->id)
    ->get()
    ->groupBy(function($val) { return \Carbon\Carbon::parse($val->created_at)->format('Y'); });

Поэтому я попытался поместить другую группу на месяц, но ошибка Свойство [made_at] не существует в этом экземпляре коллекции. вернуло

$record = \App\VehicleRental::query()
    ->where('operator_id', $operator->id)
    ->get()
    ->groupBy(function($val) { return \Carbon\Carbon::parse($val->created_at)->format('M'); })
    ->groupBy(function($val) { return \Carbon\Carbon::parse($val->created_at)->format('Y'); });


Кто-то знает, как этого добиться?

1 Ответ

0 голосов
/ 13 февраля 2020

Вы также можете передать массив элементов в метод groupBy () для вложенной группировки. Попробуйте это:

$record = \App\VehicleRental::query()
    ->where('operator_id', $operator->id)
    ->get()
    ->groupBy([
        function ($val) { return $val->created_at->format('Y'); },
        function ($val) { return $val->created_at->format('m'); },
    ]);

Как примечание: created_at может быть напрямую приведен как экземпляр Carbon. Если приведенное выше не работает, определите атрибут date mutator в вашей модели:

# VehicleRental.php

protected $dates = ['created_at', 'updated_at'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...