$modelQuery->get()の戻り値はCollection
Eloquentを使用して取得した戻り値はCollectionクラスなので、
用意されているgroupBy()メソッドを使用すればOK
Collection::groupBy
本家サイトはコチラ
これを使うと指定したキーでコレクションのアイテムをグループにまとめることができる
使ってみる
- productsテーブル
| id | category | name |
| 1 | 食品 | おにぎり |
| 2 | 飲料 | ハイボール |
| 3 | 食品 | ラーメン |
| 4 | 飲料 | ビール |
$products = Product::query()->get();
dd($products->groupBy('category')->toArray());デバッグするとちゃんとグループ分けがされてる
[
'食品' => [
['id' => 1, 'category' => '食品', 'name' => 'おにぎり'],
['id' => 3, 'category' => '食品', 'name' => 'ラーメン'],
],
'飲料' => [
['id' => 2, 'category' => '飲料', 'name' => 'ハイボール'],
['id' => 4, 'category' => '飲料', 'name' => 'ビール'],
],
]














Laravelで、DBから取得したデータを
特定のkeyを指定してグループ分けしたい時