我现在有很好的方法让CakePHP为您做自动验证。我对isUnique one感兴趣,但对于连接列感兴趣。
假设我有两列,user1_id,user2_id
如何在此表的模型中输入内容,以便在验证检查中,它要求user1_id / user2_id对是唯一的。
IE,你不能插入user1_id = 1,user2_id = 5,如果已经有一行。
谢谢!
答案 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
索引。