Unique Yii check on two columns of different tables, i.e. compound unique check

I have two tables table1and table2, each of which has a column with a name emailalong with other other columns. What I want is a validator that looks for uniqueness in the field of emailboth columns. I found an extension that checks multiple columns of a SAME table . How can I expand it so that it works for multiple columns?

+5
source share
1 answer

The className property can be specified for other classes.

Documentation: the ActiveRecord class name that should be used to look for the attribute value being validated. Defaults to null, meaning using the class of the object currently being validated. You may use path alias to reference a class name here.

Allows you to have the common_attr attribute in two models:

class Model1 extends CActiveRecord{
    public function rules(){
        array('common_attr', 'unique', 'className'=> 'Model1'),
        array('common_attr', 'unique', 'className'=> 'Model2'),
    }
}

class Model2 extends CActiveRecord{
    public function rules(){
        array('common_attr', 'unique', 'className'=> 'Model1'),
        array('common_attr', 'unique', 'className'=> 'Model2'),
    }
}

combined key CUniqueValidator..

: criteria property public array $criteria; additional query criteria. This will be combined with the condition that checks if the attribute value exists in the corresponding table column. This array will be used to instantiate a CDbCriteria object.

class Model1 extends CActiveRecord{

    public function rules(){
        array('common_attr', 'unique', 'caseSensitive'=>false,
                   'criteria'=>array(
            'join'=>'LEFT JOIN model2 ON model2.common_attr=model1.common_attr',
                            'condition'=>'model2.common_attr=model1.common_attr',
        )),
    }
}
+7

All Articles