Я создал пользовательскую функцию в своей модели и возвратил необработанные данные:
function(){ ... $connection=Yii::app()->db; $command=$connection->createCommand($sql); $rows=$command->queryAll(); return $rows; }
$ campModel = $ model-> function ..
Затем я использую эти строки в CArrayDataProvider:
$dataProvider=new CArrayDataProvider($campModel);
Наконец, я пытаюсь просмотреть с помощью CGrid:
$this->widget('zii.widgets.grid.CGridView', array( 'id'=>'bo-campaigns-grid', 'dataProvider'=>$campModel,...
Я предполагаю, что это связано с тем, как CGrid пейджинг … но я потерял Спасибо за помощь 🙂
Создайте новые объекты CSort и CPagination и назначьте их вашему датаподатчику, потому что CArrayDataProvider не определил их. Вот пример создания CSort:
$dataProvider=new CArrayDataProvider($campModel); $sort = new CSort(); $sort->attributes = array( 'fecha'=>array( 'asc'=>'dateA DESC', 'desc'=>'dateA ASC', ), ); $sort->route = 'myController/myMethod'; $dataProvider->sort = $sort; $dataProvider->sort->defaultOrder='dateA DESC';
попробуй это,
$this->widget('zii.widgets.grid.CGridView', array( 'id' => 'bo-campaigns-grid', 'dataProvider'=> new CArrayDataProvider($campModel, array( 'pagination' => array( 'pageSize' => 10 ) )), ...
Вы также можете посмотреть на CSqlDataProvider. Не уверен, что это даст вам гибкость SQL, в которой вы нуждаетесь, но она должна обрабатывать сортировку для вас легче, чем CArrayDataProvider