I have a table like this: (id, name, version, text). (name, version) is unique key, how can i make a rule to validate this.
This can be done by Yii itself, you do not need an extension for it.
However an extension can help cleaning up the rules()
method as described here:
http://www.yiiframework.com/extension/unique-attributes-validator/
This is the code (copied from that site) which will work without using the extension:
public function rules() {
return array(
array('firstKey', 'unique', 'criteria'=>array(
'condition'=>'`secondKey`=:secondKey',
'params'=>array(
':secondKey'=>$this->secondKey
)
)),
);
}
In case the value of $this->secondKey
is not available inside rules()
-method you can add the validator in CActiveRecords beforeValidate()
-method like this:
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;
}