yii: how to make a unique rule for two attributes
yii, yii-validation, yii1.x
Solution
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;
}
Problem
I have a table like this: (id, name, version, text). (name, version) is unique key, how can i make a rule to validate this.