環境
Laravel: 8.82.0
PHP: 8.1.2
asc
でNULL
を後に持ってくる
Itemを昇順で並べてみます。
失敗パターン
$user = Auth::user();
$items = $user->items()->orderBy("price", "asc")->get();
値段が安いものから表示させたいと、上記のコードで並べてみると、、、、
非売品__が先に表示されてしまいます。
そう、非売品のprice
はNULL
__なんです。
複雑な条件が必要なのか、
はたまたNULL
とNULL
でないもので分けて取得する必要があるのか
と色々考えながら、調べておりました。
->orderByRaw('column is null asc')
->orderByRaw('column is null asc')
を使うと、NULL
を後ろに回すことができます。
※column
の部分に DB のカラム名が入ります。
成功パターン
$user = Auth::user();
$items = $user->items()->orderByRaw('price is null asc')
->orderBy("price", "asc")->get();
これで、値段の安い順に並びつつ、
NULL
である非売品は、後ろに並びます。