Алиасы моделей в Yii

При работе с моделями, yii сам формирует алиасы для таблиц. Для обычных запросов это t0, t1, t2, t3 и т.п. В отношениях алиас для связанной таблицы — это название отношения. Но для меня это не очень удобно, т.к иногда взглянув на сложный запрос в профайлере сложно понять что к чему. Поэтому я устанавливаю для всех моделей алиас равный названию таблицы. Казалось бы просто в методе init() или __construct() нужно вызвать setTableAlias() и передать ему $this->tableName(), но почему у меня так не удалось сделать, я не стал с этим разбиратся и устанавливаю алиас таблицы через defaultScope() моей базовой модели.

class BaseModel extends CActiveRecord { 
    ...
    public function defaultScope() {
        return array(
            'alias' => $this->tableName(),
        );
    }
    ...
}

Самое главное помнить, что если вы захотите использовать в какой-то модели defaultScope(), то надо смержить с базовым чтобы не утратить данное поведение, CMap::mergeArray() в помощь)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *