【发布时间】:2017-08-04 10:51:27
【问题描述】:
如何在 laravel 5.4 中运行这种类型的查询
select items.id,items.name,total,region from items LEFT OUTER JOIN
(select purchases.region_id as region , sum(purchases_detail.quantity)
as total,purchases_detail.item_id
from purchases_detail
left join purchases on(purchases.id=purchases_detail.purchase_id)
GROUP BY purchases_detail.item_id) pd on (pd.item_id=items.id)
当我在 DB::select('') 中尝试此操作时 它给了我一个错误:
SQLSTATE[42000]: 语法错误或访问冲突: 1055 'amsdb.purchases.region_id' 不在 GROUP BY 中(SQL: select items.id,items.name,total,region from items LEFT OUTER JOIN (选择 purchase.region_id 作为区域,sum(purchases_detail.quantity) 作为总计,purchases_detail.item_id 来自购买详情 离开加入购买(purchases.id=purchases_detail.purchase_id) GROUP BY purchase_detail.item_id) pd on (pd.item_id=items.id))
但是当我运行它 Phpmyadmin 时效果很好
【问题讨论】:
-
你应该在 Laravel 中关闭 strict 并且一切都会正常运行。转到
config/database.php并在mysql配置数组中,将strict => true更改为strict => false;) -
@Maraboc 糟糕的建议,他应该修正他的查询。
-
@TimBiegeleisen 我认为即使他修复了查询,他也应该更新严格模式!
-
感谢@Maraboc 它对我有用,但我想知道如何在 Laravel 语法中运行这种类型的查询。
-
@aihtshamali 在 MySQL 中关闭严格模式后,您无需在 Laravel 中做任何额外的事情。但是你应该真正修复你的查询逻辑,这样你就不需要这样做了。
标签: mysql laravel phpmyadmin query-builder laravel-query-builder