2012-06-18 12 views

risposta

7

È possibile utilizzare la proprietà className per specificare per le altre classi ..

Documentazione: 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.

Consente di avere un attributo chiamato common_attr in due modelli:

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'), 
    } 
} 

e di verificare combined key validazione da più tabelle è possibile utilizzare la proprietà dei criteri di CUniqueValidator ..Non c'è bisogno di qualsiasi estensione

Documentazione: 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', 
     )), 
    } 
} 
+0

Il primo metodo funziona come un fascino. Grazie :) – dInGd0nG

Problemi correlati