Я использую Eloquent ORM в течение некоторого времени, и я знаю это довольно хорошо, но я не могу сделать следующее, а это очень легко сделать в Fluent.
У меня есть пользователи со многими-ко-многим песнями, промежуточная таблица - song_user (как и должно быть). Я бы хотел получить лучшие песни пользователя, судя по счету игры. Конечно, счетчик воспроизведения хранится в промежуточной таблице.
Я могу сделать это в Fluent:
$songs = DB::table('songs')
->join('song_user', 'songs.id', '=', 'song_user.song_id')
->where('song_user.user_id', '=', $user->id)
->orderBy("song_user.play_count", "desc")
->get();
Легко. Но я хочу сделать это в Eloquent, который, конечно, не работает:
$songs = Song::
with(array("song_user" => function($query) use ($user) {
$query->where("user_id", "=", $user->id)->orderBy("play_count", "desc");
}))