【问题标题】:Laravel - exclude current email from unique validationLaravel - 从唯一验证中排除当前电子邮件
【发布时间】:2018-07-06 19:14:53
【问题描述】:

我正在尝试在这样的 Laravel 5.5 验证中使用唯一的电子邮件地址..

   $rules = [
            'email' => 'email|unique:users,email,
    ];

这是有效的,正在检查“电子邮件”列中的“用户”表

但如果电子邮件地址与当前保存的电子邮件地址相同,则验证也将失败。

有没有办法可以在验证中添加例外规则以忽略 $user-email?

【问题讨论】:

    标签: laravel


    【解决方案1】:

    这是一个简单的解决方案

    只需添加 $this->route('id') 作为第三个参数

    如果您的路线是这样定义的:

    Route::put('{company}', 'CompanyController@update')
            ->name('update');
    

    那么你的参数名称是“公司”

    所以在你的 FormRequest 中:

    public function rules()
    {
        $rules = [
            'url' => [
                'required',
                'url',
                'unique:companies,url,'.$this->route('company') ?? 0
            ],    
        ];
        // dd($rules); << check yourself
    
        return $rules;
    }
    

    此 FormRequest 对于插入或更新的工作方式相同。

    此行将指示在插入时忽略“0”

    $this-&gt;route('company') ?? 0

    【讨论】:

      【解决方案2】:

      unique rule takes a third parameter:要忽略的记录,请参阅“强制使用唯一规则忽略给定 ID”。

      传入您不希望包含在unique 测试中的记录的ID,例如:

      $rules = [
          'email' => 'email|unique:users,email,' . $user->id
      ];
      

      【讨论】:

      • 我如何在这里获得$user-&gt;id
      猜你喜欢
      • 1970-01-01
      • 2015-03-24
      • 2014-06-08
      • 2021-08-22
      • 2013-08-24
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 2020-03-18
      相关资源
      最近更新 更多