[英]e-mail validation rule in Laravel
我這樣做驗證。
$rules = [
'email'=> 'required|regex:/^.+@.+$/i|unique:tab_example,email,'.$this>get('example_id').',example_id'
];
return $rules;
但是,我沒有成功。
該錯誤通知了
電子郵件已經存在
我想要的是,如果電子郵件已存在且來自同一用戶,則無需通知電子郵件已存在。
我不知道我的代碼中存在什么問題。
您可以使用
'email' => "required|email|unique:users,email,{$id},id",
id應替換為用於唯一檢查的表的主鍵列名稱。 {$ id}應該在$rules
數組之前定義:
$id = $request->route('user')
有時,您可能希望在唯一檢查期間忽略給定的ID。
例如,考慮一個“更新配置文件”屏幕,其中包括用戶名,電子郵件地址和位置。 當然,您需要驗證電子郵件地址是否唯一。
但是,如果用戶僅更改名稱字段而不更改電子郵件字段,則不希望拋出驗證錯誤,因為用戶已經是電子郵件地址的所有者。
你可以使用像:
'email' => [
'required',
Rule::unique('users')->ignore($user->id),
],
試試這種方式
$rules = [
'email'=> ['required', 'email', \Illuminate\Validation\Rule::unique('tab_example', 'email')->whereNot('example_id',$this->get('example_id'))]
];
只是用
$this->route('example_id')
代替
$this>get('example_id')
如果您使用資源路由,則使用$ this-> route('user')。
$rules = [
'email'=> 'required|regex:/^.+@.+$/i|unique:tab_example,email,'.$this->route('example_id').',example_id'
];
return $rules;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.