如何在CakePHP 3.0中验证字段的唯一性?在API中似乎没有列出验证函数。
你想要使用规则validateUnique
。例如,检查UsersTable
上的电子邮件地址是否唯一:
public function validationDefault(Validator $validator)
{
$validator->add(
'email',
['unique' => [
'rule' => 'validateUnique',
'provider' => 'table',
'message' => 'Not unique']
]
);
return $validator;
}
详情请参阅API文档。
您需要在您的表中使用Cake的ORM规则...
在您的命名空间后面将以下内容添加到您的UsersTable顶部
use Cake\ORM\Rule\IsUnique;
public function buildRules(RulesChecker $rules){
$rules->add($rules->isUnique(['email']));
return $rules;
}
请参阅cakephp文档,了解有关规则的更多信息。
public function isUnique(array $fields, $message = null){
所以你的代码应该是这样的:
$rules->add($rules->isUnique(['email'],'在此输入您的消息!'));
- Rod验证提供程序可以是对象或类名。如果使用类名,则方法必须是静态的。要使用除“default”以外的提供程序,请确保在规则中设置provider
键:
// Use a rule from the table provider
$validator->add('title', 'unique', [
'rule' => 'uniqueTitle',
'provider' => 'table'
]);
欲了解更多细节,请查看CakePHP3参考书中添加验证提供程序部分。
请按照手册中所述的应用程序规则进行操作。
$rules->add($rules->isUnique(['UNIQUE_COLUMN']));
- Stephanpublic function validationDefault(Validator $validator)
{
$validator->requirePresence('login_id');
return $validator;
}
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->isUnique(['login_id'], 'User already exist.'));
return $rules;
}