【问题标题】:Raw Query works on phpmyadmin but not in laravel原始查询适用于 phpmyadmin 但不适用于 laravel
【发布时间】:2017-11-18 09:03:47
【问题描述】:

我在 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, 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");

可能的错误是什么?

我收到以下错误:

SQLSTATE[42000]: Syntax error or access violation: 1055 'maitree.customers.customer_name' isn't in GROUP BY (SQL: 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 services.id)

【问题讨论】:

    标签: php mysql sql laravel


    【解决方案1】:

    可能是SQL_MODE,请更改连接“config/database.php”:

    严格 => 错误

    希望这会对你有所帮助。

    【讨论】:

    • 它有效。只需进行此更改,然后运行 ​​config cache 命令即可。
    • 很高兴为您提供帮助,如果我的回答对 oy 有效,请接受我的回答
    【解决方案2】:

    您需要使用DB::raw 来包装您的原始 SQL。

    $status_report = DB::select(DB::raw("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"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 2011-05-20
      相关资源
      最近更新 更多