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