使用其他列值进行 Eloquent 更新

2022-08-30 17:46:14

我想执行一个使用Eloquent,它将使用同一表的值来设置值。基本上,像这样:UPDATEcolumn_ccolumn_acolumn_b

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


答案 1

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

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

答案 2

例:

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

推荐