如何在不将模型发送到 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')),