0

我尝试了以下方法为我的模型添加了唯一的验证规则:

$validator
            ->requirePresence('pseudonym', 'create',['rule' => 'isUnique'])
            ->notEmpty('pseudonym');

现在我没有收到任何错误。如果我添加一个数据库约束,我只会得到一个数据库错误:

完整性约束违规:1062 键“假名”的重复条目“Stella”

如果我添加:

$validator
        ->add('pseudonym','unique',['rule' => 'validateUnique']);

我得到以下异常:

方法 validateUnique 未找到

那么它如何与 cakephp 3 一起工作呢?

4

2 回答 2

2

CakePHP 有一个 Rule 类,允许您定义唯一字段http://book.cakephp.org/3.0/en/orm/validation.html#creating-unique-field-rules

use Cake\ORM\Rule\IsUnique;

// A single field.
$rules->add($rules->isUnique(['email']));

// A list of fields
$rules->add($rules->isUnique(['username', 'account_id']));
于 2016-01-18T16:51:35.503 回答
1

添加确定方法定义位置的提供程序键

$validator
        ->add('pseudonym','unique',['rule' => 'validateUnique','provider' => 'table']);

http://book.cakephp.org/3.0/en/core-libraries/validation.html#adding-validation-providers

于 2016-01-16T15:29:45.983 回答