ホーム > Laravel > 【Laravel】リレーション先のカラムを元に並び替える方法
Laravel

【Laravel】リレーション先のカラムを元に並び替える方法

いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。

Laravel の Eloquent とコレクションを使って、リレーション先のカラムを元に並び替える方法についてまとめました。

今回やること

ユーザーの一覧を表示するが、ユーザーの表示の順番はそのユーザーのリレーション先の情報を元に変えたい。

join を使わない。

結論

$users = User::with('relation')
    ->get();

$users = $users->sortByDesc('relation.updated_at')
    ->values()
    ->all();

ジョインを使えば確かに簡単に SQL で済ませられるのですが、

複雑な取得をしつつ join を使ってリレーション先のデータも使いたい、といった時に思った挙動にならなかったり難しかったりします。

そんなとき、このコレクションを使ったリレーション先のカラムで並び替えする方法でやるとあっさりと簡単に並び替えられます。

誰かの参考になれば幸いです。

フィードバックのお願い
この記事のフィードバックがありましたらYoutubeの適当な動画にコメントしていただいたり、お問い合わせからご連絡ください。