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


