我正试图在Laravel 5.5验证中的电子邮件地址上使用unique,就像这样..
$rules = [
'email' => 'email|unique:users,email,
];
这是有效的,正在检查用户'电子邮件中的表格'柱
但如果电子邮件地址与当前保存的电子邮件地址相同,则验证失败。
有没有办法可以在验证中添加例外规则来忽略$ user-email?
答案 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