Ala*_*lan 0 php laravel eloquent
我有一个运行Laravel 5.3的应用程序.
我需要对表中的所有记录进行修改,这是我的代码:
Car::all()->each(function($car){
$car->created_by = 10;
$car->updated_by = 15;
$car->save();
});
Run Code Online (Sandbox Code Playgroud)
问题是created_by字段正在正确保存但updated_by没有.即使我dump($car)以前使用save()行,我也可以看到两个字段都已被修改.我还添加了两个字段$fillable(我知道,这是用于大规模分配,但以防万一..).
您可以在一个查询中执行批量更新,而不是检索所有汽车并循环它们并进行数千次查询:
Car::update(['created_by' => 10, 'updated_by' => 15]);
Run Code Online (Sandbox Code Playgroud)
这很简单,干净,效率更高.
如果您需要更多信息,请阅读Laravel文档,特别是关于质量分配.
希望能帮助到你.
更新
我看到模型不能静态调用更新方法,因此有点黑客说:
Car::where('id', '!=', null)->update(['created_by' => 10, 'updated_by' => 15]);
Run Code Online (Sandbox Code Playgroud)
PS:请注意您的
created_by或updated_by字段不能是唯一的,否则它会Integrity constraint violation因查询而产生一些错误.当然,没有人大规模更新一个独特的领域.