如何在Laravel的RuleFactory中定义邮箱唯一规则并解决规则不存在报错
问题原因
- 拼写错误:内置唯一性校验规则的名称为
unique,你误写为uniqe,系统无法匹配到对应规则扩展触发报错 - 用法错误:
email()方法仅用于校验字段值符合邮箱格式,不接收唯一性规则作为入参,唯一性校验需要单独调用对应方法实现
正确实现代码
基础场景(校验邮箱在指定数据表的对应字段中唯一):
$this->_rulesFactory = new RulesFactory( new RuleExtensionRegistry(), $this->_errorTemplateRegistry, new Compiler() ); $this->_validator = new Validator($this->_rulesFactory); $this->_validator->field('email') ->required() ->email() ->unique('users', 'email'); // unique方法参数说明:第一个参数为目标数据表名,第二个为数据表中要校验的字段名
特殊场景(更新用户信息时,排除当前用户自身的邮箱记录避免误判重复):
// 第三个参数为需要排除的记录主键ID $this->_validator->field('email') ->required() ->email() ->unique('users', 'email', $currentUserId);
内容的提问来源于stack exchange,提问作者Inaam ul haq
相关产品推荐
相关产品推荐

