表单验证里unique在update时怎么排除当前记录?

再做表单验证的时候 创建和更新用了同一个RoleRequest 里面有两个字段都指定了unique 再更新的时候出现已经存在 请问要如何才能再更新的时候排除当前记录?

javascript

方案一:
在 UserRequest 中想办法


    protected $create = [
        'email'=> 'required|unique:users',
        'name'=> 'required',
        ...
    ];

    protected $update = [
        'name'=> 'required',
        ...
    ];
    
    public function rules()
    {
        if ($this->isMethod('get')) return [];
        if ($this->is('*/create')) return $this->create;
        else if ($this->is('*/update')) return $this->update;
        else return [];
    }

方案二:
在 UserController 中想办法


public function update(Request $request)
{
   $form_data = $request->except(['_token', 'email']);

   $user = User::where('email', $request->email)->first();
   $user->fill($form_data);
   $user->save();
}

方案三:
在 update 视图中想办法


<form action="{ route('update') }" method="POST">
   Email: <input type="text" name="email" value="{ $user->email }" disabled>
   Name: <input type="text" name="name" value="{ $user->name }">
   ...
</form>
hcweb 回复 javascript

感谢,学习了!

JoeRChang
'email' => 'unique:users,email_address,'.$user->id

可以在验证规则后面带id参数忽略

javascript 回复 JoeRChang

还可以这样!!!又学习了,谢了哈

hcweb 回复 JoeRChang

感谢,学习了!