2011-08-13 12 views
0

これでCakePHPが自動検証を行うための素晴らしい方法がありました。私はisUniqueに興味がありますが、ジョインの列については興味があります。 結合列のCakePHP検証

はuser1_idは、どのように妥当性チェックでは、それはuser1_id/user2_idペアを必要とし、このテーブルのモデルにI入力何かように一意であることができる

をuser2_id、私は2つの列を持っていると言います。

IEでは、行にすでにuser1_id = 1、user2_id = 5を挿入することはできません。

ありがとうございます!

答えて

2

あなたのモデルでカスタム検証メソッドを使用する必要があると思います。以下のような何か:

class MyModel extends AppModel { 
    var $name = 'MyModel'; 
    var $validate = array(
    'user1_id' => array(
     'rule' => 'uniqueUserCombination', 
     'message' => 'This combination of users is already taken!' 
    ) 
    ); 

    function uniqueUserCombination($check) { 
     $count = $this->find('count', array(
      'conditions' => array(
       'user1_id' => $this->data['MyModel']['user1_id'], 
       'user2_id' => $this->data['MyModel']['user2_id'], 
      ) 
     )); 
     return $count==0; 
    } 
} 

あなたは「行が既にを持っている場合は、user1_id = 1、user2_id = 5を挿入することはできません」と述べました。上のコードはあなたの例では動作しますが、user1_id = 5、user2_id = 1を許可します。これも禁止する必要がある場合は、上記のfindに条件を追加してください。また、データベースの両方の列にUNIQUEインデックスを作成することをお勧めします。