在我的数据库中,我有这个表格:
table `candidates` (
id,
email,
department
)
需要保证邮箱和部门都是唯一的(您可以使用相同的电子邮件在两个不同的部门申请职位,但不能使用相同的电子邮件在同一部门申请两次)。这是在我的SQL数据库中构建的。
我卡在了如何在CakePHP验证器中检查这一点,因为我可以检查两个单独字段的唯一性,但无法检查两个字段的组合。在CakePHP2中似乎是可能的,如此显示的https://book.cakephp.org/2/en/models/data-validation.html#Model::Validation::isUnique,使用这种数组方法。
public $validate = array(
'email' => array(
'rule' => array('isUnique', array('email', 'username'), false),
'message' => 'This username & email combination has already been used.'
)
);
但是现在验证器的工作方式有所不同,我似乎找不到解决这个问题的方法。
编辑:
这里是我的代码,但它无法正常工作。
public function validationDefault(Validator $validator): Validator
{
...
$validator
->email('email')
->requirePresence('email', 'create')
->notEmptyString('email')
->add('email', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']);
return $validator;
}
public function buildRules(RulesChecker $rules): RulesChecker
{
$rules->add($rules->isUnique(['email', 'vac_no']), 'This email has already been used for this vacancy');
return $rules;
}
Thanks
Sims Olden
validateUnique
规则吗? - undefined