LaravelのCollection【現役エンジニアが解説】

PROGRAM

今回は、LaravelのCollectionについて、簡単に解説していきます。

Collectionとは

LaravelにはCollectionという便利な概念があります。

$hoges = collect(['hoge1', 'hoge2', 'hoge3']);
$hoges->all(); // ['hoge1', 'hoge2', 'hoge3']

上記のようにcollectメソッドでCollectionインスタンスを作成できます。

$people = collect([
	['name' => '田中太郎', 'age' => 27],
	['name' => '山田次郎', 'age' => 24],
	['name' => '高橋三郎', 'age' => 29],
]);

また、上記のようにCollectインスタンスはネスト構造にすることも可能です。

Collectionのソート

LaravelのCollectionはソートできます。

$numbers = collect([5, 1, 7, 3, 9]);
$sorted_numbers = $numbers->sort(); // [1, 3, 5, 7, 9]

上記のようにCollectionのsortメソッドを使うと昇順に並べ替えられます。

$people = collect([
	['name' => '田中太郎', 'age' => 27],
	['name' => '山田次郎', 'age' => 24],
	['name' => '高橋三郎', 'age' => 29],
]);
$sorted_people = $people->sortBy('age');

また、sortByメソッドを使うことで、引数に指定した要素でネスト構造の並べ替えも可能です。

その他の便利なメソッド

LaravelのCollectionではeachメソッドで繰返処理が可能です。

$numbers = collect([1, 2, 3, 4, 5, 6, 7, 8, 9]);
$numbers->each(function ($number) {
	if ($number % 2 == 0) { // 偶数のみ
		echo $number;
		echo '
'; } });

また、filterメソッドを使うと条件を指定してフィルタをかけることも可能です。

$numbers = collect([1, 2, 3, 4, 5, 6, 7, 8, 9]);
$filtered_numbers = $numbers->filter(function ($value, $key) {
    return $number % 2 == 0;
}); // [2, 4, 6, 8]

そして、mapメソッドを使用することで、全ての要素に処理をかけることができます。

$numbers = collect([1, 2, 3, 4, 5, 6, 7, 8, 9]);
$maped_numbers = $numbers->map(function ($number) {
    return $number * 10;
}); // [10, 20, 30, 40, 50, 60, 70, 80, 90]