连接列的CakePHP验证

时间:2011-08-13 04:38:07

标签: cakephp

我现在有很好的方法让CakePHP为您做自动验证。我对isUnique one感兴趣,但对于连接列感兴趣。

假设我有两列,user1_id,user2_id

如何在此表的模型中输入内容,以便在验证检查中,它要求user1_id / user2_id对是唯一的。

IE,你不能插入user1_id = 1,user2_id = 5,如果已经有一行。

谢谢!

1 个答案:

答案 0 :(得分: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索引。