我在PHPmyadmin中编写了一个原始查询,它为我提供了确切的答案.但是当我尝试在Laravel中执行时,同样的查询…我得到了错误:
原始查询:
SELECT customers.customer_name,customers.voucher_number,services.name,customers.status,sum(carts.amount) FROM services JOIN customers on services.id = customers.service_id JOIN carts on customers.id = carts.customer_id GROUP BY customers.id
在Laravel:
$status_report = DB::select("SELECT customers.customer_name,sum(carts.amount) FROM services JOIN customers on services.id = customers.service_id JOIN carts on customers.id = carts.customer_id GROUP BY customers.id");
什么可能是错误?
我收到以下错误:
sqlSTATE[42000]: Syntax error or access violation: 1055 'maitree.customers.customer_name' isn't in GROUP BY (sql: SELECT customers.customer_name,sum(carts.amount) FROM services JOIN customers on services.id = customers.service_id JOIN carts on customers.id = carts.customer_id GROUP BY services.id)
解决方法
您需要使用DB :: raw来包装原始sql.
$status_report = DB::select(DB::raw("SELECT customers.customer_name,sum(carts.amount) FROM services JOIN customers on services.id = customers.service_id JOIN carts on customers.id = carts.customer_id GROUP BY customers.id"));