Довольно часто простые именованные группы условий, они же scope, требуется использовать как в отношении, так для самой модели, в которой они описаны. Делается такой scope следующим образом:
public function published($val = true) { $val = (int)$val; $owner=$this->getOwner(); $criteria=$owner->getDbCriteria(); $alias=$owner->getTableAlias(); $criteria->mergeWith(array( 'condition'=>$alias.'.published='.$val, )); return $owner; }
getTableAlias
даёт нам t
, если используется сама модели и имя таблицы, если scope используется в отношении.