Php Yii验证规则-唯一
在Yii框架中,我是否可以使用唯一性验证规则在某些条件下检查字段的唯一性(我知道有条件,但这个条件有点棘手)?也就是说,我想按属性id检查唯一的天数 表: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
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
)
)),
);
}