【发布时间】:2015-07-03 05:03:41
【问题描述】:
对于测试和支持问题,我希望允许在我的用户数据库中多次使用一两封电子邮件。所有其他电子邮件都应该是唯一的。 例如:
"email" => "required|email|unique:users,email,admin@test.de"
这不起作用,我不能使用 id 字段作为例外,因为会有多个条目使用同一个电子邮件。
【问题讨论】:
标签: validation laravel laravel-5
对于测试和支持问题,我希望允许在我的用户数据库中多次使用一两封电子邮件。所有其他电子邮件都应该是唯一的。 例如:
"email" => "required|email|unique:users,email,admin@test.de"
这不起作用,我不能使用 id 字段作为例外,因为会有多个条目使用同一个电子邮件。
【问题讨论】:
标签: validation laravel laravel-5
听起来像是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;
}
【讨论】:
试试下面的XX是你的测试用户ID。
"email" => "required|email|unique:users,email,XX,id"
PS 如果你愿意,也可以在运行时动态设置
【讨论】: