从请求中更新数据库中对象的最佳方法是什么?
当前,我正在更新每个字段,然后保存对象:
$user = User::findOrFail($id);
$user->username = $request->username;
$user->role = $request->role;
$user -> save();
也不要求所有字段都存在。一个请求可以更新用户的角色,而其他请求只能更新用户名。
我该如何循环和仅更新请求中的当前字段,或者是否有办法将整个请求作为参数传递并仅设置id并雄辩地知道如何处理?
答案 0 :(得分:2)
您只需对foreach()
中的值执行$request
,然后在保存之前将它们分配给您的$user
:
$user = User::findOrFail($id);
foreach($request->except(["_token"]) AS $key => $value){
$user->{$key} = $value;
// Example: $key = "username", $value = "BobSmith"; `$user->username = "BobSmith";`
}
$user->save();
注意:使用$request->except()
可以省略请求中发送的字段,但这些字段不作为users
表中的列而存在,例如_token
(POST
中必需请求)。