группа laravel по запросу: синтаксическая ошибка или нарушение доступа: 1055

#laravel

#laravel

Вопрос:

Я пишу запрос в laravel 5.7, который выдает следующую ошибку

SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1055 ‘demoecommerce.orders.id ‘ не входит в GROUP BY (SQL: select table_users . name , orders .*, orders_details . orders_id from orders_details inner join orders on orders . id = orders_details . orders_id inner join products on orders_details . product_id = products . product_id inner join table_users on table_users . id = orders . user_id group by orders_id )

В mysql он работает правильно.

  $orders = DB::table('orders_details')
                    ->join('orders','orders.id','=','orders_details.orders_id')
                    ->join('products','orders_details.product_id','=','products.product_id')
                    ->join('table_users','table_users.id','=','orders.user_id')
                    ->select('table_users.name','orders.*','orders_details.orders_id')
                    ->groupBy('orders_id')
                    ->get();
 

Комментарии:

1. Похоже, что это проблема MySQL, которую можно решить, изменив конфигурацию Laravel strict => true на strict => false config/database.php

Ответ №1:

Если у вас есть groupBy в вашем SQL-запросе, вы можете выбирать только столбцы, которые являются частью groupby в SQL, иначе у вас должна быть некоторая агрегация (сумма, количество, среднее ..) По столбцам

Вы можете добавить еще некоторые подробности о том, что вам нужно от этого запроса, количество заказов? или сведения о заказе для каждого пользователя.

Кроме того, вы можете попробовать просмотреть GroupBy в коллекции. Группа документации Laravel по сбору