LoginSignup
22
18

More than 1 year has passed since last update.

【Laravel】Eloquentの並び替えでNULLを後ろに持ってくる

Last updated at Posted at 2022-02-21

環境

Laravel: 8.82.0
PHP: 8.1.2

ascNULLを後に持ってくる

Itemを昇順で並べてみます。

失敗パターン
$user = Auth::user();
$items = $user->items()->orderBy("price", "asc")->get();

値段が安いものから表示させたいと、上記のコードで並べてみると、、、、

非売品__が先に表示されてしまいます。
そう、非売品の
priceNULL__なんです。

複雑な条件が必要なのか、
はたまたNULLNULLでないもので分けて取得する必要があるのか
と色々考えながら、調べておりました。

->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である非売品は、後ろに並びます。

22
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
18