Сквозные атрибуты системы


Очень часто встречаются случаи, когда каждый из объектов системы
должен быть привязан к определенному пользователю (UserID) или языку (Lng)

class Post extends CActiveRecord {
    // параметры, применяемые по умолчанию
    public function defaultScope() {
        return array(
            'condition' => "lang='".Yii::app()->language."'",
        );
    }

    // именованное условие с параметром для перекрытия
    public function lang($lang){
        $this->getDbCriteria()->mergeWith(array(
            'condition' => "lang='$lang'",
        ));
        return $this;
    }
}

// выбираем все записи с языком по умолчанию
$posts = Post::model()->findAll();

// выбираем все записи на английском
$posts = Post::model()->lang('en')->findAll();