Задать вопрос
@danilduck

Почему не работает GROUP BY в Laravel 5?

Пишу запрос средствами 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 полностью. Как это обойти? Что я не понимаю?
  • Вопрос задан
  • 2658 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Файл /config/database.php, строка 53: 'strict' => true, (в "разделе" 'mysql'), значение поменять на false.

Подробности:
59d3c7f6588c1557458510.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы