LaravelのCollectionは、配列やデータベースのクエリ結果などの要素を操作するための便利なメソッドを提供しています。
その中でも、groupBy
メソッドは特定のキーに基づいてコレクションをグループ化するためのメソッドです。
groupBy
メソッドを使用すると、コレクション内の要素を指定したキーでグループ化できます。
グループ化された結果は、各グループのキーと、そのキーに対応する要素のコレクションとして返されます。
具体的な使い方
$collection = collect([
['name' => 'John', 'age' => 25],
['name' => 'Jane', 'age' => 30],
['name' => 'John', 'age' => 35],
]);
$grouped = $collection->groupBy('name');
/*
[
'John' => [
['name' => 'John', 'age' => 25],
['name' => 'John', 'age' => 35],
],
'Jane' => [
['name' => 'Jane', 'age' => 30],
],
]
*/
上記の例では、$collection
というコレクションを定義し、その要素は名前と年齢を持つ連想配列です。
groupBy
メソッドを使って、要素をname
キーでグループ化しています。
結果のコレクションは、キーとして名前が使用され、各キーに対応する要素がグループ化されたコレクションとして格納されています。
この例では、John
キーの要素は2つありますが、Jane
キーの要素は1つしかありません。
groupBy
メソッドは、キーを指定するだけでなく、クロージャ(無名関数)も使用できます。以下はクロージャを使用した例です。
$collection = collect([
['name' => 'John', 'age' => 25],
['name' => 'Jane', 'age' => 30],
['name' => 'John', 'age' => 35],
]);
$grouped = $collection->groupBy(function ($item) {
return $item['age'] => 30 ? 'over_30' : 'under_30';
});
/*
[
'over_30' => [
['name' => 'Jane', 'age' => 30],
['name' => 'John', 'age' => 35],
],
'under_30' => [
['name' => 'John', 'age' => 25],
],
]
*/
上記の例では、要素のage
が30から大きいかどうかに基づいてグループ化を行っています。
30より大きい場合はover_30
というキーに、30以下の場合はunder_30
というキーにグループ化されます。
groupBy
メソッドは、コレクション内の要素を効率的にグループ化するための便利なメソッドです。データの集計やグループごとの処理を行う際に役立ちます。
コメントを残す