Пишу запрос средствами Laravel. Не могу совладать с методом GROUP BY.
Вот MySQL запрос, который отлично работает в консоли:
SELECT users.*, sum(payments.amount) as sum_p
FROM users as users
LEFT JOIN payments as payments ON payments.user_id=users.id
WHERE payments.amount>0 AND payments.to_user_id=1 AND payments.status='success'
GROUP BY users.id ORDER BY sum_p DESC;
А вот версия с интерпретатором:
User::selectRaw('users.*, SUM(payments.amount) as sum_p')
->join("payments", 'payments.user_id', 'users.id')
->where('payments.status', 'success')
->where('payments.amount', '>', '0')
->where('payments.to_user_id', $user->id)
->groupBy('users.id')->orderBy('sum_p', 'desc')
->get();
Которая дает ошибку
Syntax error or access violation: 1055 'laravel_project.users.name' isn't in GROUP BY.
Но если в selectRaw
users.* поменять на
user.id (как в groupBy), все заработает отлично, но выдаст, конечно, мне только два столбца: users.id и sum_p, а не модель User полностью. Как это обойти? Что я не понимаю?