2017-03-05 85 views
2

我有这样一个观点:Laravel查询访问量

CREATE VIEW orders_sales AS 
SELECT code, SUM(quantity) * SUM(sale_price) as product_total, shop_id 
FROM `orders` 
GROUP BY code, product_id 

我想查询它是这样的:

$data = DB::table('orders_sales')->get(); 

我收到以下错误:

SQLSTATE[42000]: Syntax error or access violation: 1055 'pakishops2.orders.shop_id' isn't in GROUP BY (SQL: select * from orders_sales)

我能够查询它在phpmyadmin像select * from orders_sales但它不会查询与Laravel。

enter image description here

编辑:

我已经改变了看法名view_saleorders,仍然没有运气现在

+0

没有订单有shop_id字段吗? – rahulsm

+0

为什么你为视图和表保留相同的名称?你可以改变它,并检查 – rahulsm

+0

我试过了,改名为view_saleorders,没有工作 –

回答

0

尝试其他,

创建该名称作为laravel标准模型,

like

class ViewOrders extends Eloquent 

添加模型中所需的名称空间(如果有)。

然后创建类变量

protected $table = 'your-view-name'; 

而现在通过让像查数据,

ViewOrders::all(); 

,并检查你得到的数据。

add strict => false in config/database.php

如果设置为true,则查询时会添加ONLY_FULL_GROUP_BY。

替代更具体与模式,

'modes' => [ 
    'NO_ZERO_DATE', 
    'ONLY_FULL_GROUP_BY', 
], 
+0

好戏,但它没有奏效。相同的错误:SQLSTATE [42000]:语法错误或访问冲突:1055'pakishops2.orders.shop_id'不在GROUP BY(SQL:select * from view_saleorders') –

+0

您是否使'strict'=> false, 在config/database.php中。现在重新检查我的答案 – rahulsm

0

转到config/database.php文件,并检查选项strict设置为true。

将其设置为false并且您的查询将起作用。