如何在不将模型发送到 laravel 中的更新方法的情况下检查模型的唯一性?
How to check the being unique of the model without sending the model to the update method in laravel?
电子邮件和用户名对于 user.in 验证用户更新请求是唯一的,对于电子邮件和用户名我有这个错误:
"message": "尝试读取字符串中的 属性 "id"",
这是 UserRepository 文件中的方法:
public function update($request, $id)
{
$new_request = (object)$request;
$data = $new_request->all();
$this->user::where('id', $id)->update($data);
return http_response_code(201);
}
这是 UserController 中的方法:
public function update(UpdateUserRequest $request, $id)
{
return $this->userRepository->update($request, $id);
}
这是 UpdateUserRequest:
'username' => 'required|string',Rule::unique('users')->ignore($this->user->id),
其实是因为你没有$this->user
。
首先最好检查 $this->user
是否真的存在,里面有 id。
你最好像下面这样验证。
$rules = [ 'username' => 'required | string | min:2 | max: 32 | unique:users,username, . $userId'];
如果控制器中的 id
是您需要的用户 ID,您可以像这样访问该 ID:
'username' => 'required|string',Rule::unique('users')->ignore($this->route('id')),
电子邮件和用户名对于 user.in 验证用户更新请求是唯一的,对于电子邮件和用户名我有这个错误:
"message": "尝试读取字符串中的 属性 "id"",
这是 UserRepository 文件中的方法:
public function update($request, $id)
{
$new_request = (object)$request;
$data = $new_request->all();
$this->user::where('id', $id)->update($data);
return http_response_code(201);
}
这是 UserController 中的方法:
public function update(UpdateUserRequest $request, $id)
{
return $this->userRepository->update($request, $id);
}
这是 UpdateUserRequest:
'username' => 'required|string',Rule::unique('users')->ignore($this->user->id),
其实是因为你没有$this->user
。
首先最好检查 $this->user
是否真的存在,里面有 id。
你最好像下面这样验证。
$rules = [ 'username' => 'required | string | min:2 | max: 32 | unique:users,username, . $userId'];
如果控制器中的 id
是您需要的用户 ID,您可以像这样访问该 ID:
'username' => 'required|string',Rule::unique('users')->ignore($this->route('id')),