此查询在 mySQL 客户端中运行良好。但是当把它放在 Laravel 中时,它会返回
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
代码如下:
$result = DB::connection('main')
->select("
SET @acc :=0;
SELECT a.date,@acc:=@acc+sum AS total_shops FROM (
SELECT DATE(created_at) AS date, SUM(IF(created_at BETWEEN '2016-08-08 17:00:00' AND '2016-09-05 16:59:59',1,0)) AS sum
FROM sales_product
WHERE status = 1
AND DATE(created_at) BETWEEN '2016-08-08 17:00:00' AND '2016-09-05 16:59:59'
GROUP BY DATE(created_at)
) AS a
");
然后我尝试删除“SET @acc :=0”。这一次,没有错误。但结果显示 total_shops 为 null。
结果:
array:15 [
0 => {#198
+"date": "2016-08-09"
+"total_shops": null
}
1 => {#205
+"date": "2016-08-10"
+"total_shops": null
}
2 => {#204
+"date": "2016-08-11"
+"total_shops": null
}
]
最佳答案
为我工作。
- 创建语句
- 在第二个原始查询中调用语句
DB::statement(DB::raw('set @rownum=0')); $orders = DB::select( DB::raw("SELECT @rownum := @rownum + 1 AS rownum,id)); $data['pacitan']=$orders;
关于php - Laravel 不能在原始 SQL 查询中使用 'SET'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39433514/