Laravel查询视图

时间:2017-03-05 09:00:46

标签: php mysql 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]:语法错误或访问冲突:1055   'pakishops2.orders.shop_id'不在GROUP BY中(SQL:select * from   orders_sales

我可以在phpmyadmin中查询它,例如select * from orders_sales,但它不会用Laravel查询。

enter image description here

编辑:

我已将视图名称更改为view_saleorders,仍然没有运气

3 个答案:

答案 0 :(得分:0)

立即尝试替代,

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

喜欢

class ViewOrders extends Eloquent

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

然后将类变量创建为

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

现在通过点击来检查数据,

ViewOrders::all();

并检查您是否收到数据。

strict => false中添加config/database.php

如果设置为true,那么在查询时它会添加ONLY_FULL_GROUP_BY。

替代更具体的模式,

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

很抱歉恢复旧帖子,但您的观点是错误的。您需要将您的列与您的 GROUP BY 子句相匹配。

shop_id 更改为 product_id,或将 product_id 更改为 shop_id

-- This is wrong. 
CREATE VIEW orders_sales AS 
SELECT code, SUM(quantity) * SUM(sale_price) as product_total, <!shop_id!>
FROM `orders`
GROUP BY code, <!product_id!>