Laravel没有保存一个字段

时间:2017-07-26 20:32:24

标签: php laravel eloquent

我有一个运行Laravel 5.3的应用程序。

我需要对表中的所有记录进行修改,这是我的代码:

Car::all()->each(function($car){
    $car->created_by = 10;
    $car->updated_by = 15;
    $car->save();
});

问题是created_by字段正在保存,但updated_by没有。即使我先前dump($car)到save()行,我也可以看到两个字段都已被修改。我还将这两个字段添加到$fillable(我知道,这是用于批量分配,但以防万一..)。

2 个答案:

答案 0 :(得分:6)

您可以在一个查询中进行批量更新,而不是检索所有汽车并循环它们并进行数千次查询:

Car::where('id', '!=', null)->update(['created_by' => 10, 'updated_by' => 15]);

这很简单,干净,效率更高。

如果您需要更多信息,请仔细阅读Laravel doc,特别是mass assignment

希望它有所帮助。

<强>更新

我看到模型无法静态调用更新方法,因此有点黑客说:

created_by
  

PS:请注意,您的updated_byIntegrity constraint violation字段不得唯一,否则 会因查询而产生一些{{1}}错误。当然,没有人大规模更新一个独特的领域。

答案 1 :(得分:0)

我找到了解决方案。我的模型正在使用一个特性,每次更新模型时,它都会保存在updated_by字段中进行更新的人员,因此我从控制台通过命令执行我发布的第一个代码,特性是保存更新操作并且是没有用户被记录auth() - &gt; user()返回null,这就是保存的内容。希望我能说清楚。