Laravel使用许多参数从JSON更新对象

时间:2019-07-08 16:17:11

标签: php laravel

从请求中更新数据库中对象的最佳方法是什么?

当前,我正在更新每个字段,然后保存对象:

$user = User::findOrFail($id);
$user->username = $request->username;
$user->role = $request->role;
$user -> save();

也不要求所有字段都存在。一个请求可以更新用户的角色,而其他请求只能更新用户名。

我该如何循环和仅更新请求中的当前字段,或者是否有办法将整个请求作为参数传递并仅设置id并雄辩地知道如何处理?

1 个答案:

答案 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表中的列而存在,例如_tokenPOST中必需请求)。