こんにちは!
今回はLaravelのCollectionについて解説していきます。
Collectionを使うことで、データを効率よく簡単に操作することができます。
Collectionは、PHPの配列をラップして便利なメソッドを提供してくれる、Laravel独自の機能です。
今まで長い行のコードを書かなければ実現できなかったものを、数行で実装できるようになっています。
本記事を読むことで、Laravel Collectionのよく使われる基本的な操作方法を知ることができます。
ぜひ本記事を参考にして、Laravel Collectionの基本操作を身につけ、開発効率を上げましょう。
本記事の対象者
- Laravelの配列操作に困っている方
- LaravelのCollectionとはそもそもどういったものかを知りたい方
- Laravelで効率よく簡単にデータ処理をしたい方
そもそもCollectionとは何か?
Laravelにおいて、Collectionは多様なデータ処理を行うために用意された便利なクラスです。
PHPの配列に似た形式でデータを格納することができ、フィルタリングやマッピング、ソートなどのデータ加工処理を高速で行うことが可能です。
Laravel Collectionは、内部的にはPHPの標準的な配列として実装されていますが、様々な便利な操作メソッドが用意されているため、PHPの配列よりも使いやすくなっています。
要するに、PHPの配列操作を簡単にしてくれるものだと思っていただければ良いでしょう。
Collectionの使い方をマスターすることで、データの処理をよりスムーズに行うことができるようになります。
Collectionの作成方法
Collctionクラスを作成する方法を紹介します。
collect
メソッドは、配列やオブジェクトをCollectionに変換します。
以下は、配列をCollectionに変換する例です。
$collection = collect([1, 2, 3, 4, 5]);
連想配列でもcollect
メソッドでCollectionを作成することができます。
例えば、以下のような配列を考えます。
$data = [
['name' => 'John', 'age' => 20],
['name' => 'Jane', 'age' => 25],
['name' => 'Bob', 'age' => 30],
['name' => 'Alice', 'age' => 35]
];
この配列をLaravelのCollectionに変換するには、同様にcollect
メソッドを使用します。
$collection = collect($data);
これで、$collectionはLaravelのCollectionになりました。
Collectionに変換した後は、Collectionクラスで用意されている便利な操作メソッドを使ってデータを操作することができます。
使用率の高いメソッド
ここからは、特に使用率が高いメソッドを8つご紹介します。
filter
Collectionから指定した条件に合致する要素のみを抽出し、新しいCollectionを作成します。特定のCollectionデータのみに絞り込みたい時に便利です。
$collection = collect([1, 2, 3, 4, 5]);
$filtered = $collection->filter(function ($item) {
return $item % 2 == 0;
});
// [2, 4]
上記の例では、2で割り切れる数だけ絞り込んでいます。
map
Collectionの各要素に対して指定した処理を行い、新しいCollectionを作成します。データを加工した場合に使います。
$collection = collect([1, 2, 3]);
$mapped = $collection->map(function ($item, $key) {
return $item * 2;
});
// [2, 4, 6]
上記の例では、Collectionデータを2倍した数に変換しています。
pluck
Collectionの各要素から指定したキーの値を取得し、新しいCollectionを作成します。
$collection = collect([
['name' => 'John', 'age' => 30],
['name' => 'Mary', 'age' => 25],
['name' => 'Bob', 'age' => 40]
]);
$plucked = $collection->pluck('name');
// ['John', 'Mary', 'Bob']
上記の例では、name
キーを指定することでname
キーに対応する値だけの新しいCollectionを作成しています。
sort
Collectionをソートしたい場合はsort
メソッドを使います。
$collection = collect([5, 3, 1, 2, 4]);
$sorted = $collection->sort();
// [1, 2, 3, 4, 5]
sort
メソッドは、Collectionデータを昇順で並び替えます。
降順で並び替えたい場合は、sortDesc
メソッドを使いましょう。
$collection = collect([5, 3, 1, 2, 4]);
$sorted = $collection->sortDesc();
// [5, 4, 3, 2, 1]
配列をソートしたい場合はsortBy
メソッドを使います。sortBy
メソッドは、Collectionを指定したキーでソートします。
$collection = collect([
['name' => 'John', 'age' => 30],
['name' => 'Mary', 'age' => 25],
['name' => 'Bob', 'age' => 40]
]);
$sorted = $collection->sortBy('age');
/*
[
['name' => 'Mary', 'age' => 25],
['name' => 'John', 'age' => 30],
['name' => 'Bob', 'age' => 40]
]
*/
contains
Collectionに特定の要素が含まれているか調べたい場合は、contains
メソッドを使います。Collectionが指定した値を含んでいるかを調べます。
$collection = collect([1, 2, 3, 4, 5]);
$contains = $collection->contains(3);
// true
上記の例では、Collectionの要素に3が含まれているかを調べています。実際に3は含まれているのでtrueを返します。
count
Collectionの要素数を取得したい場合は、count
メソッドを使います。Collectionの要素数を取得できます。
$collection = collect([1, 2, 3, 4, 5]);
$count = $collection->count();
// 5
上記の例では、Collectionの要素数である5を取得しています。
first
Collectionの最初の要素を取り出したい場合は、first
メソッドを使います。Collectionの最初の要素を取得できます。。
$collection = collect([1, 2, 3, 4, 5]);
$first = $collection->first();
// 1
上記の例では、最初の要素である1を取得しています。
each
Collectionの要素を一つずつ取り出したい場合はeach
メソッドを使います。Collectionの各要素に対して指定した処理を実行できます。
$collection = collect([1, 2, 3, 4, 5]);
$collection->each(function ($item, $key) {
echo $item . '<br>';
});
// 結果
// 1
// 2
// 3
// 4
// 5
上記の例では、各要素に改行をつけて出力しています。
最後に
いきなり10個も覚え切らないという方はまずはmap、filter、countの3つだけでも覚えておきましょう。
筆者は、これら3つは1度のプロジェクトで必ずといってもいいくらい使います。
また、これら3つのみ覚えているだけでも開発効率は上がるはずです。
Laravel開発者にとって、Collectionは非常に強力なツールであり、データの処理や操作に役立ちます。
Collectionを使うことによって、簡単に効率の良いデータ処理を行うことができます。
Collectionの機能と使い方をより深く理解し、Laravel開発での生産性を向上させましょう!
コメント