Laravelのコレクションとは何か?いつ使うかと使用例

Laravelのコレクションとは何か?いつ使うかと使用例

534 回閲覧されました

みなさんこんにちは、jonioです。

Laravelを使って1年位経つのですがネットを調べている時に「コレクション」という言葉を見つけました。

ずっと後回しにしていたのですがさすがに何なのかを知ってないとマズイと思い、調べてこの記事を書いています。

言葉だけでは分かりにくいので図を使った例で説明します。

おすすめ参考書

基礎力を上げるのに一番おすすめです。

言葉の説明

「Laravelのコレクションは配列のラッパー」という説明を見かけると思いますが意味が分からないと思います。

(ラッパーとは配列の機能を使いやすくするコレクションみたいに機能を使いやすくする人のことです。)

そこで図で流れを追って説明します。

 

図の説明

あるシステムを作る会社にデータベースから情報を持って来るSQLさんがいたとします。

この人がデータベースから取ってきたデータは分かりにくくてプログラマから嫌われています。

あまりにもデータが分かりにくかったのでプログラマ達からブーイングの嵐になりSQLさんは交代になりました。

そしてデータベースからデータを取ってくるのが上手なクエリビルダさんに変更になりました。

クエリビルダさんが取ってくるデータは分かりやすくて人気があります。

でも新人プログラマにはクエリビルダさんのデータは難しく感じました。

そこで新人プログラマでも理解できるようにする為にEloquent(エロクアント)さんがクエリビルダさんよりもっと分かりやすいデータを持ってきました。

確かにデータは分かりやすいですが配列で使う時のデータが使いにくくなっていました。

でもデータベースから取得するデータは分かりやすいのでエロくアントさんは交代にせず配列で使う時はサポート役を入れて使いやすくしました。

サポート役の人がコレクションさんです。

これで配列のデータも使いやすくなって新人プログラマも安心してプログラムを書く事ができる様になりました。

だからコレクションは配列を使いやすくする人と覚えれおけばいいです。

いつ使うか

コレクションは配列の扱いを楽にする為の物なのでPHPの配列だけでやろうとするとコードが大変になる時に使います。

2つの例で実際に使ってみます。

使用例

めちゃくちゃ多いので覚えてないですが例を掲載します。

filterメソッド

コレクションから指定した条件に合った要素のみを抽出し新しいコレクションを作成します。

下記の配列を使います。

[1, 2, 3, 4, 5]

コレクションに変える為に下記の記述をします。

collect([1, 2, 3, 4, 5]);

そして下記の記述をします。

$filtered = $collection->filter(function ($item) {
    return $item % 2 == 0;
});

// 結果は[2, 4]

pluckメソッド

コレクションの各要素から指定したキーの値を取得し、新しいコレクションを作成します。

$collection = collect([
    ['name' => 'あべ', 'age' => 30],
    ['name' => 'いさぢ', 'age' => 25],
    ['name' => 'jonio', 'age' => 40]
]);

$plucked = $collection->pluck('name');

// 結果は['あべ', 'いさぢ', 'jonio']