使用 Laravel 表单验证中的唯一验证规则 unique 时,如果同时开启了软删除模式,那么就无法正常工作,在唯一验证时如果软删除数据中存在相同内容,那么仍然会验证失败!!!

解决方法区分新增和更新操作,每种操作都分两种写法:一种简单写法,另一种是中括号写法。

新增操作:

'email'=>'required|email|unique:users,email,NULL,id,deleted_at,NULL'
'email' => ['required', Rule::unique('users')->whereNull('deleted_at')]

更新操作:

'email'=> "required|email|unique:users,email,{$this->user->id},id,deleted_at,NULL"
'email' => ['required', Rule::unique('users')->ignore($this->user->id)->whereNull('deleted_at')]