Фильтрация отношении по максимальному значению laravel 5

Имеются две таблицы

"Games"

Games

и "game_to_users" в который связаны отношением один ко многим

game_to_users

Нужно вывести по одной записи для каждого юзера с максимальным кол-во балов.

Пытаюсь сделать так:

$games = Games::with(['attempts' => function($query){
    $query->orderBy('ball', 'DESC');
    $query->groupBy('user_id');
}])->get();

но оно не работает, выводит записи не с максимальным кол-во баллов, а первые созданные записи. Подскажите пожалуйста как отфильтровать правильно.


Ответы (1 шт):

Автор решения: Diq

всем спасибо)) это делается так

$games = Games::with(['attempts' => function($query){
        $query->where('ball',DB::raw('(select max(ball) from game_to_users as gu2 where gu2.game_id=game_to_users.game_id and game_to_users.user_id=gu2.user_id)'));
        $query->groupBy('user_id');
        $query->orderBy('ball', 'DESC');
    }])->get()

;

→ Ссылка