#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 по сбору