对于测试和支持问题,我想在我的用户数据库中多次使用一两封电子邮件。所有其他电子邮件应该是唯一的。 例如:
"email" => "required|email|unique:users,email,admin@test.de"
这不起作用,我无法使用id字段作为例外,因为会有多个条目包含相同的电子邮件。
答案 0 :(得分:3)
听起来像sometimes
$whitelist = ['admin@test.de', 'foo@bar.com', 'etc@etc.com'];
$validator->sometimes('email', 'unique:users', function($input) use ($whitelist){
return ! in_array($input->email, $whitelist);
});
如果电子邮件不在白名单中,则unique
规则适用。
在表单请求中,您可以通过覆盖getValidatorInstance()
将内容添加到验证程序实例:
protected getValidatorInstance(){
$validator = parent::getValidatorInstance();
$validator->sometimes(...);
return $validator;
}
答案 1 :(得分:0)
请尝试以下XX是您的测试用户ID。
"email" => "required|email|unique:users,email,XX,id"
PS如果您想
,也可以在运行时动态设置它