【问题标题】:Laravel Validation: soft delete + unique email + updateLaravel 验证:软删除 + 唯一电子邮件 + 更新
【发布时间】:2020-04-09 09:45:37
【问题描述】:

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

  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')],

【问题讨论】:

  • 尝试以下代码 ` $this->validate($request,[ 'email'=>['required','email',Rule::unique('clients','email')- >ignore(auth()->id()->whereNull('deleted_at'))] ]); `
  • @kunalrajput 我得到Call to a member function whereNull() on integer
  • 是您的客户端认证用户
  • 不,你只是在关闭“)”时出错了,我不需要身份验证 ID,而是请求 ID。现在修好了,谢谢你。将其添加为答案,我会批准
  • 当然,是的,这是一个错字。谢谢

标签: php laravel validation laravel-7


【解决方案1】:

试试这个

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

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 1970-01-01
    • 2019-01-26
    • 2018-07-06
    • 2015-03-24
    • 2014-06-08
    • 2021-08-22
    • 2012-10-22
    • 1970-01-01
    相关资源
    最近更新 更多