使用其他列值进行雄辩的更新

人气:489 发布:2022-10-16 标签: php laravel laravel-5 eloquent

问题描述

我想使用eloquent执行UPDATE,它将使用同一表的column_acolumn_b的值设置column_c值。基本上是这样的:

User::where('id', '>', 0)
        ->update(['column_c' => $this->column_a + $this->column_b]);

其中$this->column_a$this->column_b将是当前行的实际值。

MySQL等价物:

UPDATE `user` WHERE id > 0 SET column_c = column_a + column_b;

注意:上面的代码只是一个示例。这是而不是实际实现(这将创建数据库冗余)。

如何在Laravel 5.1中执行此类更新?我真的希望避免foreach

推荐答案

也许DB::raw可以提供帮助。这将允许您使用任何标准SQL查询来组合您的数据:

User::where('id', '>', 1)
    ->update(['column_c' => DB::raw( CONCAT(column_a, '-', column_b) )]);

478