maxkh
@maxkh
Web developer

Yii 1.1 поддержка alias в CSort?

Подскажите, можно ли в Yii 1.1 последней версии добавить поддержку alias'a в класс CSort ?

Пример:

// Объявляем критерию
$crt = new CDbCriteria();
$crt->alias = 'communityPosts'; // Устанавливаем alias с которым будем работать
        if ($filter) {
            if ($community->isMember()) {
                $crt->scopes = array('pending', 'declined' => array('operator' => 'OR'), 'activeUser');
            } elseif ($community->isOwner()) {
                $crt->scopes = 'pending';
            }
        } else {
            $crt->scopes = 'approved';
        }



$sort = new CSort('Post');
$sort->defaultOrder = 'id DESC'; 
// Мне нужно использовать alias критерии который я установил ранее, что бы не писать "$crt->alias . '.id DESC'"
$sort->attributes = array(
            'declined' => array(
                'desc' => 'status DESC, id DESC',
            ),
            'popular' => array(
                'asc' => 'status',
                'desc' => 'status DESC',
            ),
        );
$sort->applyOrder($crt);

// Получаем записи
$posts = $community->posts($crt);


Есть предложение немного модифицировать метод CSort::applyOrder()

// До
$criteria->order.=$order;
// После
$criteria->order.=$criteria->alias.'.'.$order;


Конечно же это простой вариант, лучше бы добавить отдельный метод setter... но в целом как идея ?

UPD: заглянул в метод CSort::getOrderBy() увидел
$attribute=($criteria===null || $criteria->alias===null ? $this->getModel($this->modelClass)->getTableAlias(true) : $schema->quoteTableName($criteria->alias)).'.'.$schema->quoteColumnName($attribute);


Думаю вопрос снят и я наверное делаю что-то не так
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ответы на вопрос 1
@olegf13
Если я правильно понял ваш вопрос, то вам нужно просто внимательно прочитать аннотацию к св-ву CSort::attributes вот здесь - www.yiiframework.com/doc/api/1.1/CSort#attributes-... .
Особенно часть, которая начинается с "Starting from version 1.1.3..."
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы