php - Laravel 将 2 个更新查询重写为 1 个

标签 php laravel laravel-5

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

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

提前致谢。

最佳答案

您可以像这样将它们组合在一个 MySQL 查询中(如果您使用的是 MySQL):

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

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

关于php - Laravel 将 2 个更新查询重写为 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32539352/

相关文章:

laravel - 如何将 ~/.composer/vendor/bin 目录放在你的 PATH 中?

php artisan migrate [PDOException] 找不到驱动程序

php - 使用 PDO_MYSQL 与 Zend_Db::factory 连接超时

javascript - 在 JavaScript 事件上更新与 MySQL 的聊天

php - 字符串问题中的简单 php Dollar $ 评估

php - jQuery insertAfter 在某些情况下不起作用

php - 返回正确的 JSON 响应

php - 在表格标签上添加排序功能

php - Laravel - 在导航栏上显示通知计数

php - 多个路由的相同 Laravel 资源 Controller