【Laravel8】複数のキーでソートする

こんにちは。今回はLaravelのコレクションを使用して、複数のキーでソートする方法を解説します。検証にはtinkerを使用しています。

まずはコレクションを作成

>>> $collection = collect([
... ['name' => 'john', 'age' => 30],
... ['name' => 'alex', 'age' => 40],
... ['name' => 'mac','age' => 40]
... ]);

ageの降順、nameの昇順でソートします。sortByメソッドを使用し、項目名とソート順を指定します。昇順はasc, 降順はdescを指定します。

>>> $sorted = $collection->sortBy([
['age', 'desc'],
['name', 'asc'],
... ]);

# 結果
=> Illuminate\Support\Collection {#4368
     all: [
       [
         "name" => "alex",
         "age" => 40,
       ],
       [
         "name" => "mac",
         "age" => 40,
       ],
       [
         "name" => "john",
         "age" => 30,
       ],
     ],
   }

このようにSQL Likeに書けるようになったのはLaravel8からです。この機能は本当に便利になったと感じています。

Laravel

Posted by kobainmac