如果是在添加界面,验证规则一般这样
protected $rule=[
'title|标题' => 'require|length:2,10|unique:place',
// 表示验证name字段的值是否在user表(不包含前缀)中唯一
'name' => 'unique:user',
// 验证其他字段
'name' => 'unique:user,account',
// 排除某个主键值
'name' => 'unique:user,account,10',
// 指定某个主键值排除
'name' => 'unique:user,account,10,user_id',
// 多个字段验证唯一验证条件
'name' => 'unique:user,status^account',
// 复杂验证条件
'name' => 'unique:user,status=1&account='.$data['account'],
];
查询sql是这样的
SELECT `id` FROM `place` WHERE `title` = '临沂' LIMIT 1
像这样的规则,添加是正常的,在编辑界面验证的时候,提交自身的数据常常会提示重复
在表单中把主键id也作为数据传入到验证器中
<input type="hidden" value="{$id}" name="id" />
验证规则没有改动,在验证的时候,验证用的sql语句自动变了
SELECT `id` FROM `place` WHERE `title` = '临沂' AND `id` <> 1 LIMIT 1
在验证数据中传入主键值,修改时在验证唯一性的时候,会排除传入主键的id的数据。
原文链接:https://www.cnblogs.com/PHPaki/p/8438962.html
ThinkPHP内置验证:https://www.kancloud.cn/manual/thinkphp5/129356