簡體   English   中英

Laravel中的電子郵件驗證規則

[英]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),
],

試試這個

'email' => Rule::unique('users')->ignore($user->id, '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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM