【Laravel入門】よく使うコレクションメソッドを短いコードでざっくり理解!

はじめに

Laravelを使っていると必ずと言っていいほど出てくる「コレクション」。
配列よりも便利で扱いやすく、データ操作の味方になってくれます。
この記事では、よく使われるコレクションメソッドを、できるだけ短くシンプルなコードで紹介します!

やりたいこと

  1. Laravelのコレクションって何かをざっくり理解する

  2. よく使うコレクションメソッドをサクッと試してみる

  3. 配列との違いにも少し触れる

準備するもの

ライブラリ

Laravelの標準機能のため、特別なライブラリは不要です。

####インポート手順
不要です(Laravelで使うだけでOK)

####このライブラリの説明
コレクションは Illuminate\Support\Collection クラスで提供されている便利なラッパーです。PHPの配列に似ていますが、メソッドチェーンで直感的に操作できます。

ディレクトリ構成

テスト的に使う場合は、routes/web.phpやTinkerで試すとラクです。

LaravelProject/
├── app/
├── routes/
│ └── web.php ← ここにコードを追記してもOK

コードスクリプト

コードスクリプトの概要

Laravelのコレクションによく使われる以下のメソッドを紹介します。

  • map

  • filter

  • pluck

  • sort

  • first

  • where

実行結果

それぞれのコードと出力をTinkerなどで簡単に確認できます。


php

use Illuminate\Support\Collection;

// コレクション作成
$users = collect([
[‘name’ => ‘Taro’, ‘age’ => 30],
[‘name’ => ‘Jiro’, ‘age’ => 20],
[‘name’ => ‘Saburo’, ‘age’ => 25],
]);

// map:年齢を2倍
$mapped = $users->map(function ($user) {
$user[‘age’] *= 2;
return $user;
});

// filter:25歳以上
$filtered = $users->filter(function ($user) {
return $user[‘age’] >= 25;
});

// pluck:名前だけ抽出
$names = $users->pluck(‘name’);

// sort:年齢でソート
$sorted = $users->sortBy(‘age’);

// first:最初の要素を取得
$first = $users->first();

// where:age = 25 の要素
$age25 = $users->where(‘age’, 25);


コード解説

  • map:各要素に処理をして新しいコレクションを作ります。

  • filter:条件に合う要素だけを抽出します。

  • pluck:連想配列の指定キーだけを抜き出してくれます。

  • sortBy:指定キーで並び替えができます。

  • first:最初の要素だけ取得。filterと組み合わせると便利。

  • where:ある値と一致するものだけを抽出できます。

注意点

  • コレクションは「元の配列を変更せず、新しいコレクションを返す」ことが多いです。

  • filterの戻り値はコレクション型ですが、array_values()で再インデックスしたいときもあります。

  • pluckは連想配列で使うと便利ですが、単純な配列には効きません。

まとめ

Laravelのコレクションは、ちょっとしたデータ処理にめちゃくちゃ便利です!
今回は代表的なメソッドだけを紹介しましたが、他にも reducegroupBy など、知ってると得なメソッドがたくさんあります。

まずはTinkerで手を動かして、「コレクションって便利!」を体感してみてください!

コメント

タイトルとURLをコピーしました