在Laravel的Fluent中设置变量

时间:2018-02-21 19:53:53

标签: laravel eloquent

我需要使用Laravel重新排序一些数据,并且(可能)流畅。原始测试&工作SQL看起来像这样:

SET @ordering = 0;

UPDATE data 
SET `order` = (SELECT @ordering := @ordering + 1) 
WHERE category_id = 400 
ORDER BY points;

当然,这不是开箱即用的工作,但我不知道如何让它发挥作用。我尝试过各种各样的技巧。对我来说最明显的就是(也尝试statement()):

DB::UPDATE(
    'SET @ordering = 0; 
    UPDATE data 
    SET `order` = (@ordering = @ordering + 1) 
    WHERE category_id = ? 
    ORDER BY points', 
    [400]
);

但是这给我一个错误:

  

Illuminate \ Database \ QueryException,带有消息' SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便使用接近' UPDATE数据的正确语法SET order =(@ordering = @ordering + 1)WHERE categ'在第1行(SQL:SET @ordering = 0; UPDATE数据SET order =(@ ordering = @ordering + 1)WHERE category_id = 400 ORDER BY points)'

我已经尝试过我能想到的每一个变化,但似乎没有任何看法。如何设置db变量并使用它来更新?

0 个答案:

没有答案