【发布时间】:2016-01-19 00:36:45
【问题描述】:
我想验证数据库表pools 中的name 字段是唯一的。当我创建一个新条目时,这工作正常:
$rules = [
'name' => 'required|unique:pools'
];
但是,当我想更新现有记录时,唯一性检查应该跳过正在更新的项目(显然,名称可能不会改变)。所以我挖了一下,发现了这个选项:
$rules = [
'name' => 'required|unique:pools,id,1'
];
其中 1 是我正在更新的记录的 ID。这似乎解决了问题,但后来我使用不同的 ID 进行了测试(在这种情况下验证器应该返回错误),但它仍然允许添加具有相同 name 的新记录。
例如,如果我这样做
$rules = [
'name' => 'required|unique:pools,id,4'
];
其中 4 是数据库中完全不同的条目的 ID(甚至是根本不存在的 ID),唯一性检查不起作用,并且允许我根据需要创建尽可能多的重复记录。似乎将任何 ID 添加到上述规则会使验证器忽略数据库中的所有匹配项,除了具有给定 ID 的匹配项。
基本上,我遇到了与此问题中概述的问题类似的问题,只是答案对我不起作用:
Laravel 4 Validation unique(database) ignore current
谁有解决办法?
【问题讨论】:
标签: php validation laravel laravel-4