对于使用 Laravel 5 和表单请求的用户,您可以直接获取路由模型绑定的 id 作为表单请求的属性,然后使用它从唯一规则中忽略它。$this->name_of_the_model->id
例如,如果您希望拥有唯一的电子邮件,但也允许管理员编辑用户,则可以执行以下操作:
路线:
Route::patch('users/{user}', 'UserController@update');
控制器:
public function update(UserRequest $request, User $user)
{
// ...
}
表格要求:
class UserRequest extends FormRequest
{
// ...
public function rules()
{
return [
'name' => 'required|string',
'email' => [
'required',
'email',
Rule::unique('users')->ignore($this->user()->id, 'id')
],
//...
];
}
//...
}
请注意,我们忽略了正在编辑的用户,在这种情况下,该用户可能与经过身份验证的用户不同。