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