7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

laravelのCollectionについて簡単に紹介〜〜

Posted at

はじめに

みなさんはある配列の特定の条件を満たしている値がだけ取得したい時はどうしますか?
半年前の自分であれば
・ループしてif文で条件決めて、、、
・array_filterで特定条件の値だけ、、、
などのことを行なっていたと思いますが、現在はCollectionを使うことが多くなりました。
なので備忘録ということも混みでCollectionについて書こうと思います。

Collectionとは??

Collectionとは簡単に言うと配列を簡単に操作するための便利なラッパーです。
使用することでフィルタリングやソートといった工程も簡潔に行うことが可能になります。

Collectionの使用方法

まず行うこと(準備)

namespace(名前空間)を書く。

use Illuminate\Support\Collection;

collectionに使用する配列を用意し、collectionを使用

// サンプルの配列
$array = [1, 2, 3, 4, 5];

// Collectionの生成
$collection = collect($array);

これだけデータを操作する準備が整いました!
Collectionで使用できるメソッドは多いので自分が開発でよく使用するメソッドを3つ紹介します。

filter

filterメソッドは文字通りデータをフィルタリングするときによく利用します。
フィルタリングする条件は数値の比較、文字列の一致も可能です。

// サンプルの配列
$array = [1, 2, 3, 4, 5];

$collection = collect($array);
$filter = $collection->filter(function (int $value, int $key) {
    return $value > 3;
})->all();

// 実行結果:[4, 5];

pluck

plickメソッドは配列のキーに対応している値を返します。

$users = [
    ['id' => 1, 'name' => 'Harry'],
    ['id' => 2, 'name' => 'Ron'],
    ['id' => 3, 'name' => 'Jordge'],
];

$collection = collect($users);
// 'name' キーに基づいて値を抽出
$names = $collection->pluck('name')->all();

実行結果:['John', 'Jane', 'Jordge']

map

mapメソッドはcollectionに変換したデータを繰り返しで返します。またmapメソッド内で新しい値に変更することもできます。

// サンプルのデータ
$data = [1, 2, 3, 4, 5];
$collection = collect($data);

// mapメソッドを使用して各要素を2倍にする
$doubledValues = $collection->map(function ($value) {
    return $value * 2;
})->all();

//実行結果 : [2, 4, 6, 8, 10]

最後に

今回は簡単ではありますが、Collectionについて紹介しました。
他にもCollectionで出来ることは多いのでぜひ試してみてください!!

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?