Collectionsは配列を強力でエレガントにラップするもので、データを洗練された方法で扱うための数十の連鎖可能なメソッドを提供します(map、filter、reduce、groupByなど)。Eloquentクエリの結果はCollectionsとして返されるため、常にこれらを使用します。
$collection = collect([1, 2, 3, 4, 5]);
$result = $collection
->filter(fn($n) => $n % 2 === 0) // [2, 4]
->map(fn($n) => $n * 10) // [20, 40]
->values(); // re-index
$collection->sum(); // 15
$collection->avg(); // 3
$collection->max(); // 5
Collectionは配列をラップし、流暢で連鎖可能なAPI — 手動の配列関数よりも遥かに表現力豊かで、クリーンなデータパイプラインのために連鎖可能 — を提供します。
$users = User::all(); // returns a Collection of User models
$users->where('active', true) // filter
->sortBy('name')
->map(fn($u) => $u->name)
->take(10);
$users->pluck('email'); // extract one field → a collection of emails
$users->groupBy('role'); // group by a field → role => [users]
$users->keyBy('id'); // index by id
EloquentはCollectionsを返すため、PHPでクエリ結果をエレガントに変換できます — ただし、大規模なデータセットの場合は、すべてを取得してPHPでフィルタリングするのではなく、データベースクエリを優先してください。
map, filter, reduce, each transform/iterate
pluck, keyBy, groupBy, partition restructure
sum, avg, min, max, count aggregate
sort, sortBy, reverse, unique order/dedup
first, last, take, skip, chunk slice
contains, every, some, where query
implode, flatten, collapse, merge combine
CollectionsはLaravelの重要で普遍的な機能です — 配列やデータの操作をエレガントで表現力豊かなものにし、Eloquentクエリの結果はCollectionsであるため、データベースデータを扱うときに常にこれらを使用することになり、日々欠かせない知識です。
コアバリューは流暢で連鎖可能なAPIです:冗長で命令的な配列操作の代わりに、Collectionsではデータ変換(フィルタリング、マッピング、グループ化、集計、ソート)を読みやすく、構成可能なメソッドチェーンとして表現できます — これはLaravelのエレガントなスタイルを体現した、大きな生産性と可読性の利益です。
豊富なメソッドセット(変換用のmap/filter/reduce、再構築用のpluck/groupBy/keyBy、集計およびソートメソッド)を理解することで、データをクリーンに処理でき、Eloquentの結果(Collectionsを返す)を効果的に扱うために必要です。
Collectionsを知ること — その流暢なAPI、利用可能なメソッドの幅広さ、そしてEloquentがこれらを使用しているという事実 — は生産的なLaravel開発の基礎です。データ操作は常に発生し、Collectionsはそれをエレガントにする方法だからです。(1つの重要な実用的な注意点:大規模なデータセットのフィルタリング/ソートの場合、すべてのレコードをCollectionに取得してPHPで処理する代わりに、データベースクエリでその作業を行うことを優先してください — Collectionsはメモリ内データ操作のためのもので、効率的なクエリに代わるものではありません。)Collectionsに堪能なことは、慣用的で生産的なLaravelコードの特徴です。