Yii验证规则 - 独特

时间:2012-05-03 13:39:05

标签: php yii

在Yii框架中,我可以使用唯一的验证规则来检查某个条件下字段的唯一性(我知道有标准,但这个条件有点棘手)?即,我想通过property_id检查num_days唯一。

表:

NUM PROP_ID

3   4

3   5

验证应该通过以防我尝试插入3,6,但在3,4的情况下失败

3 个答案:

答案 0 :(得分:3)

结帐UniqueAttributesValidatorthis answer。在链接中,您会看到他们已将$this->attributename用于CUniqueValidator的params选项的criteria数组,但出于某种原因,$this->attributenamenull为了我。我认为这是因为$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)

创建自定义验证器或验证函数,这很简单。