Как отсортировать вывод из базы по полю

Здравствуйте,

Сейчас делаю вот так:


class SiteMenu extends CWidget {       

    public function run() {

		

		$criteria=new CDbCriteria; 

		$sort=new CSort('menu');

		$sort->applyOrder($criteria);

		$menuItems=menu::model()->findAll($criteria);

		

        //$menuItems = menu::model()->findAll();

        $this->render('siteMenu', array('menuItems'=> $menuItems, 'sort'=>'orders'));

    } 

}

Но мне не нравится параметр "SORT" в URL строке, как мне сделать чтобы сортировалось по умолчанию

по полю "orders" чтобы не передавать этот параметр в GET.

Скажу сразу код не мой (потому и работает):), а из стандартного контроллера отображения фреймворка.

Заранее спасибо всем.

А просто order by добавить? или я что то не понял… :confused:

Нет нет, Вы все правильно поняли, только беда в том что я не понимаю как именно туда его добавить.


class SiteMenu extends CWidget {       

    public function run() {

		

		$criteria=new CDbCriteria; 

$criteria->order='field1';


		$sort=new CSort('menu');

		$sort->applyOrder($criteria);

		$menuItems=menu::model()->findAll($criteria);

		

        //$menuItems = menu::model()->findAll();

        $this->render('siteMenu', array('menuItems'=> $menuItems, 'sort'=>'orders'));

    } 

}

Большое спасибо, работает.

А не подскажите пожалуйста где почитать насчет того как добавлять параметры запроса в модель?

просто я не понимаю

так какие то зарезервированные слова есть? в фреймыорке для этого?

вот например: хотья бы тут

            $criteria=new CDbCriteria; 


	$criteria->[b]order[/b]='orders';


	$sort=new CSort('menu');


	$sort->[b]applyOrder[/b]($criteria);


	$menuItems=menu::model()->findAll($criteria);

Жирным я выделил, это что зарезервированные слова самого фреймворка? т как например тут же добавить критерий сортировки по уменьшению например или поиска максимального значения, чтобы было в одном запросе.

Я читал официальную документацию, как то неочень понял если честно.

Примеры организации запросов можно гденить посмотреть?

А за решение проблемы большое спасибо.

Первое выделенное слово (order) - это свойство (переменная) объекта класса CDbCriteria. Класс служит для упрощения конструирования запросов к БД, и каждое его свойство всего-лишь соответствует некоторой части SQL-запроса (в данном случае - части ORDER BY). Всего его свойства описаны тут:

http://www.yiiframework.com/doc/api/CDbCriteria

Второе выделенное слово - это метод класса CSort, которой тоже хорошо описан тут: http://www.yiiframework.com/doc/api/CSort

CSort используется исключительно вместе с CActiveRecord. При создании объекта конструктору передается имя класса модели. Впоследствии модели будут отсортированы по указанному критерию.

Метод applyOrder($criteria) изменяет свойство order объекта $criteria в соответствие со значениями в массиве $_GET. Если такие значения не были переданы, то используется сортировка по умолчанию (свойство defaultOrder).

Большое спасибо за подробный ответ, так понятно.