Laravel - GroupBy 回调后的排序日期

Laravel - Sortby date after GroupBy callback

我正在创建一个集合并使用 groupBy 根据月份将项目分组在一起,但是在此之后我希望它返回升序日期顺序 (Jan/Feb/Mar)。这是我在下面使用的函数;

    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;
    }

在我显示结果的那一刻,我得到 return 月份的随机顺序;

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' 排序?或者按数组键排序会更好吗?谢谢

你可以这样使用它:

$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(); 
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,然后重新收集数组。