モデルをDBから取得するときやoneToManyのリレーションを並び替えるときに、複数の条件で並び替えたい場合があります。
1つ目の条件では値が同じで並び順が決定できず、2つ目の条件で優先順位を決定する場合などです。

複数条件での並び替え方法1 orderByを連続

単純にorderbyを複数つなげることで、複数の並び替え条件となります。


Profile::orderBy('ranked_at', 'desc')
->orderBy('rank', 'asc')
->get();

上記の例だとORDER BY ranked_at DESC, rank ASC というクエリになります。

複数条件での並び替え方法2 orderByRaw

orderByRawを使えば自由にORDERBY句を記述することができます。もしFIELD関数などを使用したい場合はこちらで書いても良いでしょう。

Profile::orderByRaw('ranked_at desc, rank asc')
->get();