【问题标题】:Laravel rewrite 2 update queries into 1Laravel 将 2 个更新查询重写为 1 个
【发布时间】:2015-09-12 13:25:26
【问题描述】:

有没有办法将以下查询重写为 1 个查询?

$this->template->whereId($id)->update(['default' => true]);
$this->template->whereNotIn('id', $id)->update(['default' => false]);

提前致谢。

【问题讨论】:

  • 仅 DB::raw。你可以接受吗?

标签: php laravel laravel-5


【解决方案1】:

您可以将它们组合在一个 MySQL 查询中(如果您使用的是 MySQL),如下所示:

UPDATE template_table
     SET default = CASE
        WHEN id = $id THEN 1
        WHEN id <> $id THEN 0
        ELSE default = default
     END

然后您可以使用 DB::raw() 向数据库发送原始查询。

【讨论】:

  • 我认为ELSE default 应该是。并且不需要 ELSE
【解决方案2】:
DB::statement("
    UPDATE templates
    SET default = 
        CASE
            WHEN id = ? THEN 1
            ELSE 0
        END
", [$id]);

没有其他(雄辩的)方式

【讨论】:

    猜你喜欢
    • 2020-12-06
    • 2018-09-27
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多