【Laravel】コレクションのグループ化にはgroupByが便利!
collectionのgroupByメソッドの使い方
よくEloquentで取得したコレクション(Collection)データである項目でグループごとにまとめたい場合があります。そんな時はgroupByというメソッドがめちゃ使えます。
例えば、顧客(Customer)データが以下のようになっていたとします。
id | name | sex(0:男性, 1:女性) |
1 | 田中太郎 | 0 |
2 | 山田花子 | 1 |
3 | 佐藤一郎 | 0 |
4 | 斉藤一 | 0 |
5 | 鈴木貴子 | 1 |
ここで男女別にデータを分けたい場合にgroupByを使用します。
public function getUsers()
{
$customers = Customer::all();
$customersBySex = $customers->groupBy(function ($customer) {
return $customer->sex;
});
dd($customersBySex);
}
結果は以下のようになります。
これで男女別に分けることができました!
上記のように単にカラムで分けるだけなら以下のように簡潔にもかけます。
$customersBySex = $customers->groupBy('sex');
まとめ
今回はコレクションのgroupByをご紹介しました。
色々なメソッドを使いこなせると実装力が高まるので1つでも多くのメソッドを使ってみてください。
最近のコメント