Фильтрация отношении по максимальному значению laravel 5
Имеются две таблицы
"Games"
и "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()
;

