Когда я запускаю ниже SQL вручную, я получаю ожидаемые результаты. Я пытаюсь написать тот же запрос в Laravel Eloquent, и я получаю сообщение об ошибке:
SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1056 Не удается сгруппировать по «агрегату» (SQL: выберите количество () в качестве совокупности из daily_menu
внутреннего объединения meals
в daily_menu
. id
= meals
. daily_menu_id
левого объединения fruits
в fruits
. meal_id
= meals
. id
, где lodge_id
= 1 группа по 1) *
Оригинальный SQL Работающий запрос:
SELECT
d.id,
SUM(IF(f.id IS NULL, 0, 1)) AS fruit_count
FROM daily_menu d
JOIN meals m
ON d.id = m.daily_menu_id
LEFT JOIN fruits f
ON m.id = f.meal_id
GROUP BY 1
Мой Laravel Eloquent Реализация:
$query = $query
->select("daily_menu.id", DB::raw("SUM(IF(fruits.id IS NULL, 0, 1)) AS fruit_count"))
->join("meals", "daily_menu.id", "=", "meals.daily_menu_id")
->leftJoin("fruits", "fruits.meal_id", "=", "meals.id")
->groupBy(DB::raw("1"));