我有这样的观点:
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查询。
编辑:
我已将视图名称更改为view_saleorders,仍然没有运气
答案 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!>