Подскажите, можно ли в 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);
Думаю вопрос снят и я наверное делаю что-то не так