Laravel Collection groupBy() не работает с 2 значениями

#php #laravel

#php #laravel

Вопрос:

У меня есть контроллер, который получает все opened и closed проекты.

 $projectsByRegister = collect($result)->groupBy(['date', 'closed']);
  

Когда этот код выполняется, он возвращает

введите описание изображения здесь


При разделении groupBy я вижу, что значения верны:

 $projectsByRegister = collect($result)->groupBy(['closed']); // a flag 0 or 1
  

введите описание изображения здесь

 $projectsByRegister = collect($result)->groupBy(['date']); // month / year
  

введите описание изображения здесь


Чего я хочу добиться, так это чего-то вроде:

 01/2018:
    0: [{...}]
    1: [{...}]
01/2019:
    0: [{...}]
    1: [{...}]

...
  

Есть идеи?

Ответ №1:

Используйте это так:

$projectsByRegister = собрать($result)-> groupBy(‘дата’)-> groupBy(‘закрыто’);

Комментарии:

1. Почти тот же результат, что и в первом примере в вопросе, но с увеличивающимся числом там, где date должно быть. И игнорирование groupBy('closed')

2. Затем используйте groupBy перед его сбором.