我想驗證數據庫表pools
中的name
字段是唯一的。當我創建一個新的條目,這工作得很好:Laravel條件唯一性驗證器不起作用
$rules = [
'name' => 'required|unique:pools'
];
然而,當我想更新現有記錄,那麼唯一性檢查應該跳過正在更新的項目(如,顯然,這個名字可能是不變)。所以我挖了一遍,發現這個選項:
$rules = [
'name' => 'required|unique:pools,id,1'
];
其中1是我正在更新的記錄的ID。這似乎解決了這個問題,但後來我用不同的ID進行了測試(在這種情況下驗證器應該返回一個錯誤),但它仍然允許添加一個具有相同name
的新記錄。
例如,如果我做
$rules = [
'name' => 'required|unique:pools,id,4'
];
其中4是在DB完全不同的條目的ID(或甚至一個ID不存在的話),唯一性檢查不工作並允許我製作儘可能多的重複記錄。似乎在上面的規則中添加任何ID都會使驗證程序忽略數據庫中的所有匹配項,除了具有給定ID的匹配項外。
基本上,我有一個相似的問題之一,這個問題列出,除了回答不爲我工作:一個解決方案
Laravel 4 Validation unique(database) ignore current
有人嗎?
哈哈,那是快:) – Iamzozo
你是對的@lamzozo –
我明白了。真的很傻。我會接受2秒前的答案,因爲它們都是相同的。 – jovan