У меня проблема с получением данных. Я пытаюсь получить всех пользователей с максимальным значением (баллов). Мой вопрос такой же, как Фильтр OData по максимальному значению и полю .
Код для моего вопроса:
$query = User::select('users.id','users.username','games.points',
'games.created_at')
->join('games', 'users.id', '=', 'games.user_id')
->whereBetween('games.created_at', [$start, $end]);
Но проблема в том, когда я хочу удалить дубликаты и получить максимальное количество очков за каждого пользователя.
В версии, где мне не нужно, где я делаю таким образом:
return User::select('users.id', 'users.username', 'games.points',
'games.created_at')
->join('games', 'users.id', '=', 'games.user_id')
->whereRaw('(users.id, games.points) IN (SELECT user_id, MAX(points)
FROM games GROUP BY user_id)')
->orderByDesc('points')
->get();
Спасибо