yii:如何为两个属性创建一个唯一的规则

我有一个这样的表:
(id,name,version,text)。
(name,version)是唯一键,如何使一个规则验证这个。
这可以通过Yii本身完成,你不需要它的扩展。
但是扩展可以帮助清除rules()方法,如下所述:

http://www.yiiframework.com/extension/unique-attributes-validator/

这是在不使用扩展名的情况下工作的代码(从该网站复制)

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

如果$ this-> secondKey的值在rules()方法中不可用,您可以在CActiveRecords beforeValidate()中添加验证器,方法如下:

public function beforeValidate()
{
    if (parent::beforeValidate()) {

        $validator = CValidator::createValidator('unique', $this, 'firstKey', array(
            'criteria' => array(
                'condition'=>'`secondKey`=:secondKey',
                'params'=>array(
                    ':secondKey'=>$this->secondKey
                )
            )
        ));
        $this->getValidatorList()->insertAt(0, $validator); 

        return true;
    }
    return false;
}
http://stackoverflow.com/questions/9670992/yii-how-to-make-a-unique-rule-for-two-attributes

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:yii:如何为两个属性创建一个唯一的规则