Laravel - дата сортировки после обратного вызова GroupBy - PullRequest
0 голосов
/ 15 мая 2018

Я создаю коллекцию и использую groupBy для группировки элементов в зависимости от месяца, однако после этого я хочу вернуться к порядку возрастающих дат (январь / февраль / март).Вот моя функция, которую я использую ниже:

    private function monthByMonthAgentReferrals() {
         $case = Case::where('start_date', '>', Carbon::now()->subDays(360))
                     ->where('source', 'AGENT')->get()
                     ->groupBy(function($key) {
               return Carbon::parse($key->start_date)->format('m');
         }); 
         return $case;
    }

В тот момент, когда я отображаю результаты, я получаю возврат месяцев в случайном порядке;

Collection {#1982 ▼
  #items: array:12 [▼
    12 => Collection {#1321 ▶}
   "07" => Collection {#1322 ▶}
    10 => Collection {#1320 ▶}
   "05" => Collection {#1991 ▶}
   "06" => Collection {#1990 ▶}
   "08" => Collection {#1989 ▶}
   "01" => Collection {#1988 ▶}
    11 => Collection {#1987 ▶}
   "09" => Collection {#1986 ▶}
   "02" => Collection {#1985 ▶}
   "03" => Collection {#1984 ▶}
   "04" => Collection {#1983 ▶}
  ]
}

Какя бы пошел о сортировке по 'start_date' снова?или было бы лучше отсортировать по ключу массива?Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018
private function monthByMonthAgentReferrals() {
     $case = Case::where('start_date', '>', Carbon::now()->subDays(360))
                 ->where('source', 'AGENT')->get()
                 ->groupBy(function($key) {
           return Carbon::parse($key->start_date)->format('m');
     })->toArray();

     ksort($case);

     return collect($case); 
}

Преобразует коллекцию в массив, использует функцию ksort для массива, а затем вспоминает массив.

0 голосов
/ 15 мая 2018

Вы можете использовать это так:

$case = Case::where('start_date', '>', Carbon::now()->subDays(360))
                 ->selectRaw('table_name.*')
                 ->where('source', 'AGENT')
                 ->groupBy(function($key) {
           return Carbon::parse($key->start_date)->format('m');
})->orderBy('start_date')->get(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...