2017-02-13 12 views
0

air_idという名前のテキストボックスを含む編集フォームを持つCakePHPアプリケーションを作成しています。私のテーブルでは、複合主キーとしてproject_idとair_idを使用しています。したがって、air_idを更新している間、私は唯一性を検証する必要があります。 私のテーブル構造は次のようである:私はcakephp3.0を使用していますが、私は、以下の をスコープとvalidateUniqueルールを使用していますcakephpのスコープで一意のフィールドを確認する

現在
project_id   air_id  
     1   [email protected] 
     1   [email protected] 

私のコードです:

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

そして、私のコントローラは、この

ようなものです ​​

これで、毎回確認メッセージが表示されています。私が必要とするのは、[email protected]の値を[email protected]に変更するとエラーが発生し、それを他の値に変更してもエラーは発生しません。私の検証に何か間違っていますか?

+0

特定のproject_idに 'air_id'フィールドをユニークにする必要がありますか? –

+0

"** _ここで、値[email protected]を[email protected]_**に変更したときに検証メッセージを表示しています。"これは、テーブル内容に '1、test1 @ test.com'は既に存在します。あなたが直面している実際の技術的な問題を記述した適切な詳細で質問を更新してください。 – ndm

+0

@ndmこれで、毎回検証メッセージを出しています。私が必要とするのは、[email protected]の値を[email protected]に変更するとエラーが発生し、それを他の値に変更してもエラーは発生しません。 –

答えて

0

CakePHPの一意のフィールドルール:

私たちも良いかもしれないCakePHPの一意のフィールドのルールがあります:(。例えばUsersTable.php)あなたのテーブルでは

を:

public function buildRules(RulesChecker $rules) 
{ 
    $rules->add($rules->isUnique(
     ['air_id', 'project_id'], 
     'Your validation error here.' 
    )); 

    return $rules; 
} 

であなたのテーブルの一番上に、このクラスを含めることを忘れないでください:

use Cake\ORM\RulesChecker; 

ここをクリック(CakePHP Unique Fields Rules)。

関連する問題