php - Eloquent 模型批量更新

标签 php laravel laravel-4 eloquent

如果我错了请纠正我,但我认为在 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/

相关文章:

php - 将mysql while循环数据保存到数组中,然后保存到数据库中

javascript - 如何仅从 Angular Js中的MySQL数据库日期戳中获取日期

php - 我的代码执行完成花费了太多时间

Laravel 5 - 仅在特定页面/ Controller (页面特定 Assets )上添加样式表

由 SWIG 制作的 php 扩展未加载

php - 如何提高此 PHP/MySQL 代码的性能?

exception - Laravel 测试和纯文本异常消息

laravel - Laravel 的 Sublime 文本自动补全

php - 使用 laravel 访问 json 输入

php - jQuery .load() 破坏加载到 html 正文中的 PHP 变量