既存の投稿を再投稿しますが、いくつかの変更があります。実際、以前の投稿で、「foreach に無効な引数が指定されました」というエラーがありましたが、これは、$command->execute() を $command->queryAll() で変更するというユーザーの提案された解決策によって解決されました。これは ClistView を通過するのに役立ちましたが、_view ビューをレンダリングしようとすると、次のエラーが発生しました。
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',
)); ?>
エラーが発生しました
C:\wamp\www\contest\protected\views\contest_view.php の 8 行目の非オブジェクトでメンバー関数 getAttributeLabel() を呼び出します。
コードの場所
<b><?php echo CHtml::encode($data->getAttributeLabel('id')); ?>:</b>
手伝って頂けますか?前もって感謝します