使用其他列值进行雄辩的更新
我想使用eloquent执行
UPDATE
,它将使用同一表的column_a
和column_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) )]);
相关文章