我想知道是否可以用验证器数据更新/保存模型?我试过谷歌搜索,似乎找不到任何东西。
我只是想做这样的事
$validator = Validator::make(request()->all(), [
'first_name' => ['required', 'string', 'max:255'],
'last_name' => ['required', 'string', 'max:255'],
'address_line_1' => ['required', 'string', 'max:255'],
'address_line_2' => ['required', 'string', 'max:255'],
'postcode' => ['required', 'string', 'max:255'],
'city' => ['required', 'string', 'max:255'],
'county' => ['required', 'string', 'max:255'],
]);
$address = $validator->getData();
$address->save();
而不是一个接一个地设置所有变量然后保存?
3条答案
按热度按时间scyqe7ek1#
由于
getData()
返回一个关联数组,因此可以使用update
方法:或者(在我看来),您可以使用
request
的validate
方法来返回已验证的数据(如果验证成功)。请注意(取决于您使用的Laravel版本),为了执行这些类型的操作,您可能必须在
Model
中禁用这些字段的保护:mec1mxoz2#
如果你想的话你可以这么做
创建
更新
这将做你的工作,因为你想。
但是你需要小心
mass assignment
(不要忘记阅读下面的NOTE
)如果你执行mass赋值(我上面写的解决方案),你不应该冒任何风险。因此,在模型中相应地设置
fillable
或guarded
属性。你可以在这里详细阅读。https://laravel.com/docs/7.x/eloquent#mass-assignment
**注意:**但在某些情况下,
fillable
检查不适用于update
。它将执行可填充检查
在这种情况下,它不会执行检查。
这些参考文献对此行为有详细的解释。
https://github.com/laravel/framework/issues/16447
Laravel Eloquent - $fillable is not working?
fwzugrvs3#
在2023年,我发现这种方式更加简洁和简单: