我的驗證規則是...Laravel驗證:唯一例外不工作爲一個用戶
$rules = [];
foreach($this->request->get('email') as $key=>$value){
$rules['email.'.$key] = 'required|regex:/[a-zA-Z][email protected][a-zA-Z]+(\.[a-zA-Z]+)+/|unique:admins,admin_email,'.$this->request->get('admin_id')[$key].',admin_id';
}
基本上,規則是它的需要,通過正則表達式,而電子郵件是不是已經在使用與電子郵件正被特定行使用的例外。然而,當我跑的形式我得到這個錯誤信息:
The email.0 has already been taken.
需要明確的是,這種形式的有8個不同的用戶,只有第一個是給我這個問題。我做了一個dd()規則來看看應用的驗證規則之間有什麼不同,但我沒有看到任何規則。
"email.0" => "required|regex:/[a-zA-Z][email protected][a-zA-Z]+(\.[a-zA-Z]+)+/|unique:admins,admin_email,0,admin_id"
"email.1" => "required|regex:/[a-zA-Z][email protected][a-zA-Z]+(\.[a-zA-Z]+)+/|unique:admins,admin_email,1,admin_id"
"email.2" => "required|regex:/[a-zA-Z][email protected][a-zA-Z]+(\.[a-zA-Z]+)+/|unique:admins,admin_email,2,admin_id"
如果我更新email.0,我沒有得到這個問題。無論是否更新email.0,我也不會在其他任何行中遇到此問題。由於存在外鍵約束,我無法刪除此用戶。令人難以置信的是,admin_id
這個特定的管理員是0
。或者,換句話說,這是表的外觀爲這個特定條目
admin_id|admin_email
--------+------------
0 | [email protected]
編輯:哪裏Laravel構建和運行實際的查詢?如果我可以在數據庫日誌上執行dd(),我可能能夠找到我的問題(請參閱實際的原始查詢)。
我明顯錯過了一些東西 - 任何幫助將不勝感激!
你可以粘貼'DD的輸出( request())'在驗證和驗證代碼本身之前? – dbr