Laravel - 更新具有不同值的多个记录

时间:2016-03-10 11:48:54

标签: php mysql laravel eloquent

我有一张桌子,类似于:

|   key    | value |
|----------|-------|
| limit    |    15 |
| viplimit |    25 |
| ..       |       |

我有一个阵列:

Array
(
[0] => Array
    (
        [key] => limit
        [value] => 10
    )

[1] => Array
    (
        [key] => viplimit
        [value] => 99
    )

...

现在,说我们有100行。更新与数组对应的表的最佳方法是什么?

每100行都有一个查询选项,但这只是糟糕的表现。

1 个答案:

答案 0 :(得分:0)

这应该有效:

$statement = "UPDATE mytable
    SET key = CASE id
        WHEN 1 THEN 'key'
        WHEN 2 THEN 'another_key'
        WHEN 3 THEN 'some_key'
    END,
    value = CASE id
        WHEN 1 THEN 15
        WHEN 2 THEN 25
        WHEN 3 THEN 45
    END
    WHERE id IN (1, 2, 3)
");

DB::statement($statement);

想想如何创建正确的查询。如果它的管理面板或不经常运行的东西,我只是使用迭代来保持简单。