collectionのgroupByメソッドの使い方

よくEloquentで取得したコレクション(Collection)データである項目でグループごとにまとめたい場合があります。そんな時はgroupByというメソッドがめちゃ使えます。

例えば、顧客(Customer)データが以下のようになっていたとします。

idnamesex(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つでも多くのメソッドを使ってみてください。

この記事をシェアする

Laravel開発のお悩み相談・学習サポートはこちら

じゅのきちメンターサービス

じゅのきちメンターサービス