Laravel Collection の SortByが便利!

  • 2021年11月8日
  • 2021年11月8日
  • Laravel

LaravelでEloquentからデータを呼び出した場合など、入れ子になっているデータを生成した際、基本的に”Collection”クラスのオブジェクトとして生成されるようになっています。

Collectionオブジェクトは、配列本体と、配列を扱うのに便利なメソッドが含まれており、データを生成した後で様々な処理を配列に対して行うことができるようになっています。

今回ご紹介するSortBy()メソッドもその便利な機能の一つです。

もしデータベースからデータを取得するのであれば、基本的にORDER BY句を使用してデータをソートすることができます。

しかし、場合によってはデータベースから一度データを取得した上で後からソートしたい場合や、データベース以外のソースからデータを取得した場合など、配列の状態になっているデータをソートしたくなる時があります。

SortBy()を使うと、配列内のデータを基準にして、データを並べ替えることができます。

$collection = collect([
    ['id' => 1, 'name' => '山田', 'age' => 18],
    ['id' => 2, 'name' => '佐藤', 'age' => 38],
    ['id' => 3, 'name' => '小林', 'age' => 25],
]);

$sorted = $collection->sortBy('age');

print_r($sorted->toArray());

<結果>

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 山田
            [age] => 18
        )

    [2] => Array
        (
            [id] => 3
            [name] => 小林
            [age] => 25
        )

    [1] => Array
        (
            [id] => 2
            [name] => 佐藤
            [age] => 38
        )
)

https://qiita.com/yukachin0414/items/6c18805c7451620bc59d から引用

データの塊は維持されたまま、キーの順番だけ変わってます。

素のPHPだと少し扱いが面倒だったりするので、この機能は非常に使えます。
僕も、データベース内だけではソートできない場面に当たったことがあり、この機能にかなり助けられました。

Laravelで開発を行う際は、是非参考にしてみてください。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG