php - Laravel 不能在原始 SQL 查询中使用 'SET'?

标签 php mysql laravel

此查询在 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
    }
]

最佳答案

为我工作。

  1. 创建语句
  2. 在第二个原始查询中调用语句
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/

相关文章:

php - Levenshtein - 分组酒店名称

php - 使用 Docker 工具箱 MySQL 连接超时

php - 在以 PHP 运行的 MySQL 文件中使用 PHP session 变量?

android - 如何将 datepickerdialog 中选定的日期传递给 Cursor

php - Laravel5 和 GAE 使用多队列

php - 从 codeigniter Controller 中的数组中删除一个索引

PHP - 日期返回错误值

php - 未定义索引 : usersJSON on line 6 []

php - 如何在 Laravel 4 中为每个日志级别编写单独的日志文件?

mysql - 根据列值连接 3 个表 - Laravel