Php Yii验证规则-唯一

Php Yii验证规则-唯一,php,yii,Php,Yii,在Yii框架中,我是否可以使用唯一性验证规则在某些条件下检查字段的唯一性(我知道有条件,但这个条件有点棘手)?也就是说,我想按属性id检查唯一的天数 表: NUM PROP_ID 3 4 3 5 如果我尝试插入3、6,验证应该通过,但如果插入3、4,验证应该失败。创建自定义验证程序或验证函数,很简单。签出,还有。在这些链接中,您会看到他们使用了$this->attributename作为CUniqueValidator的criteria选项的params数组,但出于某种原因,$th

在Yii框架中,我是否可以使用唯一性验证规则在某些条件下检查字段的唯一性(我知道有条件,但这个条件有点棘手)?也就是说,我想按属性id检查唯一的天数

表:

NUM PROP_ID

3   4

3   5

如果我尝试插入3、6,验证应该通过,但如果插入3、4,验证应该失败。创建自定义验证程序或验证函数,很简单。

签出,还有。在这些链接中,您会看到他们使用了
$this->attributename
作为CUniqueValidator的
criteria
选项的
params
数组,但出于某种原因,
$this->attributename
对我来说是
null
。我认为这是因为,
$this
没有正确地传递给验证器,所以无论如何,最好使用UniqueAttributesValidator类,因为它只是针对这类情况创建的

结果sql将有一个
WHERE
子句,如下所示:

SELECT ... WHERE (`num`=:value) AND (`prop_id`=:prop_id) ...

这将很容易失败3,4和通过3,6。所以它应该适合您的情况。

首先在表中创建唯一字段

在模型中,将此添加到规则()中

对于两个字段的组合,请使用此代码

public function rules() {
return array(
    array('firstKey', 'unique', 'criteria'=>array(
        'condition'=>'`secondKey`=:secondKey',
        'params'=>array(
            ':secondKey'=>$this->secondKey
        )
    )),
);
}

是的,你说得对。但我更喜欢第二种方法。无论如何,非常感谢。很高兴我能帮上忙
public function rules() {
return array(
    array('firstKey', 'unique', 'criteria'=>array(
        'condition'=>'`secondKey`=:secondKey',
        'params'=>array(
            ':secondKey'=>$this->secondKey
        )
    )),
);
}