Search the Community
Showing results for tags 'carraydataprovider'.
-
Hello, I'm working in Yii framework. In my index action I created the dataprovider in the following way $connection=Yii::app()->db; $user_id = Yii::app()->user->id; $sql = 'SELECT * FROM post LEFT JOIN comment ON post.id = comment.post_id AND comment.user_id =:user_id LIMIT 0 , 30 '; $command=$connection->createCommand($sql); $command->bindParam(':user_id', $user_id,PDO::PARAM_STR); $rawData = $command->execute(); $dataProvider=new CArrayDataProvider($rawData, array( 'id'=>'user', 'sort'=>array( 'defaultOrder' => 'post.created', ), 'pagination'=>array( 'pageSize'=>10, ), )); then I render the index view $this->render('index',array( 'dataProvider'=>$dataProvider, 'category_id'=>$category_id, )); Index view is doing <?php $this->widget('zii.widgets.CListView', array( 'dataProvider'=>$dataProvider, 'itemView'=>'_view', )); ?> which cause the error Invalid argument supplied for foreach() C:\wamp\www\yii\framework\web\CArrayDataProvider.php(140) * @param array $directions the sorting directions (field name => whether it is descending sort) */ 136 foreach($directions as $name=>$descending) 137 { 138 $column=array(); 139 $fields_array=preg_split('/\.+/',$name,-1,PREG_SPLIT_NO_EMPTY); 140 foreach($this->rawData as $index=>$data) 141 $column[$index]=$this->getSortingFieldValue($data, $fields_array); 142 $args[]=&$column; 143 $dummy[]=&$column; 144 unset($column); 145 $direction=$descending ? SORT_DESC : SORT_ASC; 146 $args[]=&$direction; 147 $dummy[]=&$direction; 148 unset($direction); 149 } When I use $rawData = $command->queryAll(); instead of $rawData = $command->execute(); I got the error Call to a member function getAttributeLabel() on a non-object in C:\wamp\www\contest\protected\views\contest\_view.php on line 8 where the code is <b><?php echo CHtml::encode($data->getAttributeLabel('id')); ?>:</b> Can you help me? Thank you in advance