SQL запрос ---> CGridView

Подскажите пожалуйста через какой компонент или в принципе каким образом можно результат SQL запроса отобразить в CGridView. Возможно имеется какой-то dataProvider класс для передачи данных. Пробовал так…




....

$connection = Yii::app()->db;

$sql="SELECT * FROM tasks";


$dataProvider = new CSqlDataProvider($sql, array(

		       'pagination'=>array('pageSize'=>'10'),

	            ));

....



В результате имеем ошибку…

PHP Error

Trying to get property of non-object

/var/www/localhost/htdocs/yii/framework/base/CComponent.php(616) : eval()'d code(1)

Только начал вникать в Yii. возможно тут всё просто.

Судя по этому куску


eval()'d code(1)

проблема не в выборке а в самом гриде, а точней в полях грида

покажите как вы грид выводите

Да. Если честно вывод грида оставил прежний как для CActiveDataProvider. там зато у меня всё что надо показывается.

Вот сам код: полностью всё содержимое файла вью.




<?php echo CHtml::link('Добавить...',array('create')); ?>


<?php $this->widget('zii.widgets.grid.CGridView', array(

	'dataProvider' => $model->search_sql(), //это так самая функция из прошлого поста

	'selectableRows'=>0, //Выделение строк (0,1,2)

	'cssFile'=>false,

	'summaryText'=>'Вывод {start}-{end} из {count}',

	'columns'=>array(  //тут вывожу все поля из таблицы. как я предпологал должно было сработать

		'id',      // ситуация банальная - просто вывести запрос. чтобы на основании полученого опыта 

		'id_knt',    // выполнить уже конкретную задачу

		'id_wkt',

		'date_start',

		'date_stop',

		array(

			'class'=>'CButtonColumn',

			'template' => '{update} {delete}',

			'deleteConfirmation'=>'Вы действительно хотите удалить эту позицию<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/huh.gif' class='bbc_emoticon' alt='???' />',

		),

	),

));



Вот как-то так. )

Где-то что-то не так )

советую посмотреть дэбаг бэктрейс. посмотреть откуда таки растут ноги.

потому что я вот у себя сделал следующее и все работает на ура




$sql="SELECT * FROM users";


$model = new CSqlDataProvider($sql, array(

                       'pagination'=>array('pageSize'=>'10'),

                    ));




$this->widget('zii.widgets.grid.CGridView', array(

        'dataProvider' => $model, //это так самая функция из прошлого поста

        'selectableRows'=>0, //Выделение строк (0,1,2)

        'cssFile'=>false,

        'summaryText'=>'Вывод {start}-{end} из {count}',

        'columns'=>array(  //тут вывожу все поля из таблицы. как я предпологал должно было сработать

                'id',      // ситуация банальная - просто вывести запрос. чтобы на основании полученого опыта

                'login',    // выполнить уже конкретную задачу

                'email',

                'name',

                'dob



какая версия у вас yii ?

Вот такая версия.

Yii Framework/1.1.7 2011-04-07 08:27

Ваш код действительно работает. Но вот только с учётом комментариев.




$sql="SELECT * FROM tasks";

$dataProvider = new CSqlDataProvider($sql, array('pagination'=>array('pageSize'=>'10')));

$this->widget('zii.widgets.grid.CGridView', array(

		'dataProvider' => $dataProvider,

		'selectableRows'=>0, //Выделение строк (0,1,2)

		'cssFile'=>false,

		'summaryText'=>'Вывод {start}-{end} из {count}',

		'columns'=>array(

			'id',

			'id_knt',

			'id_wkt',

			'date_start',

			'date_stop',

			/*array(

				'class'=>'CButtonColumn',

				'template' => '{update} {delete}',

				'buttons'=>array('update' => array('label' => 'Редактировать')),

				'deleteConfirmation'=>'Вы действительно хотите удалить эту позицию?',

			),*/

		)

));



получается что в кнопках проблема была. Что-то я не пойму. А как ж я без кнопок то…

Привожу часть текста из стэк трэйс




#0 + /var/www/localhost/htdocs/yii/framework/base/CComponent.php(616): eval()


#1 +

 /var/www/localhost/htdocs/yii/framework/zii/widgets/grid/CButtonColumn.php(309):

 CComponent->evaluateExpression("Yii::app()->controller->createUrl("update",array("id"=>$data->pr...",

 array("data" => array("id" => "1", "id_knt" => "6", "id_wkt" => "1", "date_start" => "2011-02-01 00:00:00",

 ...), "row" => 0))


#2 +

 /var/www/localhost/htdocs/yii/framework/zii/widgets/grid/CButtonColumn.php(288):

 CButtonColumn->renderButton("update", array("label" => "Редактировать",

 "url" => "Yii::app()->controller->createUrl("update",array("id"=>$data->pr...",

 "imageUrl" => "/assets/55c3bd44/gridview/update.png", "options" => array("class" => "update")),

 0, array("id" => "1", "id_knt" => "6", "id_wkt" => "1", "date_start" => "2011-02-01 00:00:00", ...))



удаленно тяжело сказать где ошибка (

попробуйте методом исключения найти проблемное место.

Запрос у меня выполняется уже. Отображается. Теперь не рисуются кнопки и стандартная сортировка по колонкам не работает.

Надо открывать новый топик :)

За прошлый ответ выражаю благодарность :)