スポンサーリンク
Laravel の select で 昇順や降順ではなく、指定した順番にソートしたいんですけど
それなら orderByRaw で可能だよ
Laravel で 特定のカラムの値で並べ替えて取得したい場合は以下のように orderBy を使って参照するカラムと並べ替えの種類を指定します。
1 |
$users = User::where('hogehoge',$hogeValue)->orderBy('created_at','desc')->get(); |
こうすると、カラムの値をみて、昇順や降順などで並べ替えて結果を取得できます。
でも、とあるカラムを指定の順に並べたいという場合はどうすれば
たとえば Fruit という Model があり、Apple、Orange、Grape、の順になるよう
そのような場合は orderByRaw メソッドで、優先順を指定(ORDER BY CASE)してあげます。
具体的には
1 2 3 4 5 6 7 |
$fruits = Fruit::where('hogehoge', $hogeValue)->orderByRaw("CASE WHEN name = 'Apple' THEN 1 WHEN name = 'Orange' THEN 2 WHEN name = 'Grape' THEN 3 ELSE 9999 END" )->get(); |
としてやれば、特定の順番にソートされたものを取得することがで
スポンサーリンク
スポンサーリンク