Laravel7 複数のカラムを指定してorder byを実行する手順

Laravel7 複数のカラムを指定してorder byを実行する手順

Laravel7で複数のカラムを指定してorder byを実行する手順を記述してます。

環境

  • OS CentOS Linux release 8.0.1905 (Core)
  • Composer 1.10.5
  • PHP 7.4.5
  • Percona Server Ver 8.0.19-10
  • Laravel Framework 7.6.2

※CentOs8に Laravel のインストールはこちら
※CentOs8 に Percona Server のインストールはこちら

使用データ

employeesテーブルの下記のデータを使用します。

+----+-----------+---------------------+------+
| id | code      | name                | role |
+----+-----------+---------------------+------+
|  1 | 1314      | 杉山 涼平           | 8    |
|  2 | 87208     | 宮沢 さゆり         | 5    |
|  3 | 0         | 近藤 直人           | 1    |
|  4 | 720       | 斉藤 くみ子         | 5    |
|  5 | 16357288  | 山口 直人           | 1    |
|  6 | 247798    | 斉藤 英樹           | 9    |
|  7 | 7792      | 井高 直子           | 4    |
|  8 | 39741     | 山本 修平           | 4    |
|  9 | 3024      | 鈴木 健一           | 2    |
| 10 | 8         | 田中 零             | 1    |
| 11 | 275668503 | 宮沢 裕美子         | 9    |
| 12 | 24860     | 笹田 春香           | 8    |
| 13 | 219       | 坂本 くみ子         | 9    |
| 14 | 77033428  | 青山 明美           | 9    |
| 15 | 87        | 西之園 さゆり       | 7    |
| 16 | 3024937   | 高橋 陽子           | 2    |
| 17 | 33        | 桐山 幹             | 9    |
| 18 | 2017      | 中津川 あすか       | 2    |
| 19 | 952       | 鈴木 明美           | 9    |
| 20 | 323386    | 田中 淳             | 8    |
| 21 | 633019    | 山本 学             | 7    |
| 22 | 281925    | 石田 加奈           | 7    |
| 23 | 4324118   | 村山 京助           | 4    |
| 24 | 688341    | 山岸 花子           | 6    |
| 25 | 375801    | 田中 結衣           | 5    |
| 26 | 1958919   | 原田 さゆり         | 7    |
| 27 | 516570    | 佐々木 京助         | 9    |
| 28 | 53        | 木村 翔太           | 2    |
| 29 | 199085    | 桐山 香織           | 8    |
| 30 | 17629     | 原田 花子           | 6    |
+----+-----------+---------------------+------+

複数カラムにorder by

上記のデータに対して、複数のカラムに対してorder byをかけるコード場合は、orderByRawを利用すれば可能です。

$employees = Employee::orderByRaw("role DESC, id ASC")->get();

実行結果はroleが降順で表示され、idが昇順で表示されます。

チェインメソッドで記述する方法をあります。結果は上記と同じです。

$employees = Employee::orderByDESC("role")->orderBy("id")->get();