表:
NUM PROP_ID
3 4
3 5
验证应该通过以防我尝试插入3,6,但在3,4的情况下失败
答案 0 :(得分:3)
结帐UniqueAttributesValidator和this answer。在链接中,您会看到他们已将$this->attributename
用于CUniqueValidator的params
选项的criteria
数组,但出于某种原因,$this->attributename
为null
为了我。我认为这是因为$this
没有正确传递给验证器,所以无论如何最好使用UniqueAttributesValidator类,因为它只针对这些情况。
生成的sql将有一个WHERE
子句,如下所示:
SELECT ... WHERE (`num`=:value) AND (`prop_id`=:prop_id) ...
这将很容易失败3,4,并通过3,6。所以它应该适合你的情况。
答案 1 :(得分:2)
首先在表中创建唯一字段
并在模型中将此添加到您的规则()
array('field_name', 'unique'),
对于两个字段的组合,使用此代码
public function rules() {
return array(
array('firstKey', 'unique', 'criteria'=>array(
'condition'=>'`secondKey`=:secondKey',
'params'=>array(
':secondKey'=>$this->secondKey
)
)),
);
}
答案 2 :(得分:1)
创建自定义验证器或验证函数,这很简单。