[Laravel orderby]取得データを並べ替える方法

広告Laravel
2023年9月28日

Laravel の orderBy の利用方法についてのまとめです。

10.x データベース:クエリビルダ Laravel

readouble.comreadouble.com

カラムと asc/desc を指定: orderBy

DB::table('users')->orderBy('name', 'desc')->get();
 
DB::table('users')->orderBy('name')->get();  // asc
DB::table('users')->orderByDesc('name')->get();  // asc

latest/oldest

DB::table('users')->latest()->get(); // order by `created_at` desc
DB::table('users')->oldest()->get(); // order by `created_at` asc
 
DB::table('users')->oldest('updated_at')->get();

カラムを指定しない場合のデフォルトはcreated_atカラム

ランダム順:inRandomOrder

DB::table('users')->inRandomOrder()->get();

既存の順序の削除: reorder

$query = DB::table('users')->orderBy('name');
$unorderedUsers = $query->reorder()->get();

複数カラム指定

チェーンメソッドで繋げる

$users = DB::table('users')
            ->orderBy('name')
            ->orderBy('old')
            ->get();

または  orderByRaw  で指定する

DB::table('users')->orderByRaw("name DESC, old ASC");
    ->get();

NULL を最後にする

データに null が含まれ、asc で null を最後にしたい場合

DB::table('users')->orderByRaw("old is null asc")
    ->orderBy('old')
    ->get();