LARAVEL, ELOQUENT, SQL - groupBy 1 - PullRequest
       7

LARAVEL, ELOQUENT, SQL - groupBy 1

0 голосов
/ 12 марта 2020

Когда я запускаю ниже 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"));

1 Ответ

0 голосов
/ 12 марта 2020
$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("daily_menu.id"));

Я не должен был использовать 1 Я должен был использовать правильный псевдоним столбца. Связанный: Не могу исправить это: «Невозможно сгруппировать по совокупности»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...