Laravel - 从唯一验证中排除当前电子邮件

时间:2018-01-27 17:25:31

标签: laravel

我正试图在Laravel 5.5验证中的电子邮件地址上使用unique,就像这样..

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

这是有效的,正在检查用户'电子邮件中的表格'柱

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

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

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:-2)

这是一个简单的解决方案

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

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

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

那么您的参数名称为“ company”

因此在您的FormRequest中:

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

    return $rules;
}

此FormRequest的插入或更新功能相同。

此行将指示在插入的情况下忽略“ 0”

$this->route('company') ?? 0