我再次发布现有帖子,但有一些更改。实际上,在上一篇文章中,我遇到了“为 foreach 提供的参数无效”错误,该错误已通过用户提出的解决方案解决,将 $command->execute() 更改为 $command->queryAll()。这帮助我完成了 ClistView,但是当我尝试渲染 _view 视图时,我得到了错误:
在第 8 行的 C:\wamp\www\contest\protected\views\contest_view.php 中的非对象上调用成员函数 getAttributeLabel(),其中命令为 getAttributeLabel('id')); ?>
这是正常的,因为我从 CArrayDataProvider 得到的是一个数组。正如用户所建议的,我应该使用 CActiveDataProvider 一个 CActiveRecord 数组。实际上,我正在使用 DAO 来获得更好的性能,并且想避免使用 CActiveRecord。
按照代码更好地了解我在做什么。
在我的索引操作中,我通过以下方式创建了数据提供者
$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->queryAll();
$dataProvider=new CArrayDataProvider($rawData, array(
'id'=>'user',
'sort'=>array(
'defaultOrder' => 'post.created',
),
'pagination'=>array(
'pageSize'=>10,
),
));
然后我渲染索引视图
$this->render('index',array(
'dataProvider'=>$dataProvider,
'category_id'=>$category_id,
));
索引视图正在做
<?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
)); ?>
我得到了错误
调用第 8 行 C:\wamp\www\contest\protected\views\contest_view.php 中非对象的成员函数 getAttributeLabel()
代码在哪里
<b><?php echo CHtml::encode($data->getAttributeLabel('id')); ?>:</b>
你能帮助我吗?先感谢您