php - 如何修复在“group by”子句中添加不必要元素的错误
问题描述
我有一个查询,其中我通过逗号分隔获取多个条形码。Syntax error or access violation: 1055 'prod_test.products.id' isn't in GROUP BY
当我放入products.id
group by 子句时收到错误,它给了我错误Syntax error or access violation: 1055 'prod_test.products.name' isn't in GROUP BY
,似乎我必须按 select 语句中提到的每个元素进行分组。有什么办法可以解决这类问题。以下是我的查询:
return Product::select(
'products.id',
'products.name',
'products.name_ur',
'products.barcode',
'products.unit',
'products.category_id',
'products.image',
'vendor_products.trade_price',
'products.desc',
'categories.name as category_name',
'vendor_categories.category_status as category_status',
DB::raw("(GROUP_CONCAT(products_barcodes.barcode SEPARATOR ',')) as multiple_barcodes")
)
->leftJoin('vendor_products', function($join){
$join->on('products.id', '=','vendor_products.product_id');
})
->leftJoin('products_barcodes', function($join){
$join->on('products.id','=','products_barcodes.product_id');
})
->leftJoin('categories', function($join){
$join->on('products.category_id','=','categories.id');
})
->leftJoin('vendor_categories', function($join){
$join->on('categories.id', '=', 'vendor_categories.category_id');
})
->where('products.barcode', $barcode)
->groupBy('products.id')
->first();
解决方案
您在选择列表中缺少“products_barcodes.product_id”
return Product::select(
'products.id',
'products.name',
'products.name_ur',
'products.barcode',
'products.unit',
'products.category_id',
'products.image',
'products_barcodes.product_id',
'vendor_products.trade_price',
'products.desc',
'categories.name as category_name',
'vendor_categories.category_status as category_status',
DB::raw("(GROUP_CONCAT(products_barcodes.barcode SEPARATOR ',')) as multiple_barcodes")
)
->leftJoin('vendor_products', function($join){
$join->on('products.id', '=','vendor_products.product_id');
})
->leftJoin('products_barcodes', function($join){
$join->on('products.id','=','products_barcodes.product_id');
})
->leftJoin('categories', function($join){
$join->on('products.category_id','=','categories.id');
})
->leftJoin('vendor_categories', function($join){
$join->on('categories.id', '=', 'vendor_categories.category_id');
})
->where('products.barcode', $barcode)
->groupBy('products.id')
->first();
推荐阅读
- c# - {"Year, Month, and Day 参数描述了一个无法表示的 DateTime。"} 格式问题
- amazon-web-services - Amazon RDS 通过 SSH 隧道连接(由于使用 Laravel Forge 进行预置,因此没有 PEM 密钥文件)
- javascript - AVA 单元测试未通过 Javascript 测试规范
- python - 编写一个函数,接收一个整数列表,如果它按顺序包含 007,则返回 True
- php - 关于如何检查子表是否具有某些多个值的雄辩或 SQL 方式
- python-3.x - python-vlc 不播放和响应 youtube 视频链接?
- laravel - laravel 验证数组和缺失参数
- php - Laravel 关系不起作用。没有调用关系方法
- java - 如何从数组列表中删除按钮单击时的列表视图项?
- firebase-cloud-messaging - firebase 通知只允许从我的域发送