2017-03-05 76 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並且您的查詢將起作用。