0

モデルに一意の検証ルールを追加するために、次のことを試しました。

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

これでエラーは発生しなくなりました。データベース制約を追加すると、データベース エラーのみが発生します。

整合性制約違反: 1062 キー 'pseudonym' のエントリ '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 に答える