首页 > 解决方案 > laravel group by 查询:语法错误或访问冲突:1055

问题描述

我正在 laravel 5.7 中编写查询,它给出以下错误

SQLSTATE [42000]:语法错误或访问冲突:1055 'demoecommerce.orders.id' 不在 GROUP BY 中(SQL:选择table_users. name, orders.*, orders_details. orders_idfrom orders_detailsinner join orderson orders. id= orders_details. orders_idinner join productson orders_details. product_id= products. product_idinner jointable_userstable_users. id= orders.user_id分组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();

标签: laravel

解决方案


如果您的 SQL 查询中有 groupBy,则只能选择属于 SQL 中 groupby 的列,否则您必须在列上有一些聚合(sum、count、average..)

您可以添加更多详细信息,关于您需要从此查询中获得什么,订单数?或每个用户的订单详细信息。

此外,您可以尝试查看 GroupBy on collection。Laravel 文档 GroupBy 集合


推荐阅读