Laravel的collection提供了好用的groupby功能,可以做到像在sql中的group by sum, count等等:
如果是model select完的資料想要再做到類似在sql中group by的功能,就可以用這種方式,很方便。
後記:
1. 若要做到類似group by concat的功能,可使用$group->pluck('col_name')。
2. ->collapse(); 是把分開的array結合成一個:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果是分開的array data想要group操作,可以把array變成一個再做group操作。
3. ->values()->all();
group by後的結果, 預設會把group的key帶上去, 可使用->values()->all()去掉group key。
4. group by with Multiple Columns
$groups = collect($my_array)->groupBy(function ($item, $key) {
return $item['A'].$item['B'].$item['C'].$item['D'];
});
5. group by all
->groupBy('employee_id')->all();
原本:
變為:
6. group by and filter row by min column
7. group by then sort by column