提问者:小点点

Laravel验证:软删除唯一电子邮件更新


我正在尝试设置客户注册检查和个人资料编辑。

  1. 我正在使用软删除
  2. 电子邮件必须是唯一的(当然不包括删除的)
  3. 如果配置文件被编辑(id存在),它必须忽略该字段电子邮件

到目前为止我已经

'email' => [
    'required',
    'email',
    'unique:clients,email,NULL,deleted_at,deleted_at,NULL',
],

现在这可以正常工作并检测到未删除的唯一电子邮件,但是当我需要从客户端编辑配置文件时,它会给我错误。我尝试添加额外的独特设置,但它们似乎被忽略了:

'email' => [
    'required',
    'email',
    'unique:clients,email,NULL,deleted_at,deleted_at,NULL',
    Rule::unique('clients')->ignore('id', (int)$request->input('id')) // <- from Laravel docs, but is not working
],

我只找到了其中一个需求的解决方案,但我似乎无法将它们结合起来。

编辑:修复是

'email'=>['required','email',Rule::unique('clients','email')->ignore($request->input('id'))->whereNull('deleted_at')],

共1个答案

匿名用户

试试这个

 $this->validate($request,[
            'email'=>['required','email',Rule::unique('clients','email')->ignore($id)->whereNull('deleted_at')]
        ]);