如果我错了请纠正我,但我认为在 Eloquent 模型中没有大规模更新这样的东西。
有没有办法在不对每一行发出查询的情况下对数据库表进行批量更新?
比如有没有静态方法,比如
User::updateWhere(
array('age', '<', '18'),
array(
'under_18' => 1
[, ...]
)
);
(是的,这是一个愚蠢的例子,但你明白了......)
为什么没有实现这样的功能? 如果出现这种情况,我会很高兴吗?
我(开发人员)不想像这样实现它:
DB::table('users')->where('age', '<', '18')->update(array('under_18' => 1));
因为随着项目的增长,我们以后可能会要求程序员改表名,他们无法搜索替换表名!
是否有这样一个静态方法来执行这个操作?如果没有,我们是否可以扩展 Illuminate\Database\Eloquent\Model
类来完成这样的事情?
最佳答案
也许这在几年前是不可能的,但在最新版本的 Laravel 中你绝对可以做到:
User::where('age', '<', 18)->update(['under_18' => 1]);
值得注意的是,在调用 update
之前需要 where 方法。
关于php - Eloquent 模型批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22430716/