控制器,
$model=Product::model()->display_products_statistics();
$this->render('admin',array(
'model'=>$model,
));
查看,
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'product-grid',
'dataProvider' => $model->display_products_statistics(),
'filter'=> $model,
'columns'=> array(
'member_count',
'seller_count',
'visitor_count',
'lowest price',
'desc',
'price',
'createdate',
'updatedate',
'opid',
'pimg',
array(
'class'=>'CButtonColumn',
),
),
));
模型,
$sql="select member_count,seller_count,
visitor_count from fc_product fp
group by member_count,visitor_count,seller_count
order by member_count desc";
$connection=Yii::app()->db;
$command=$connection->createCommand($sql);
$products_statistics=$command->queryAll();
$dataprovider=new CArrayDataProvider($products_statistics,
array('pagination'=>false));
return $dataprovider->getData();
但后来我收到了这个错误
致命错误:在第111行的D:\ wamp \ www \ yii \ framework \ zii \ widgets \ CBaseListView.php中的非对象上调用成员函数getData()
我很困惑,不知道出了什么问题。
答案 0 :(得分:0)
您的问题是您没有以正确的方式使用CDataProvider。 CGridView需要显示CDataProvider的实例,但您已使用CDataProvider-> getData()代替。我还建议使用CSqlDataProvider,它是专门用于自定义sql查询的。在你的模型中尝试这个;
$count = Yii::app()->db->createCommand('SELECT COUNT(*) FROM fc_product')->queryScalar();
$sql="select member_count,seller_count,
visitor_count from fc_product fp
group by member_count,visitor_count,seller_count
order by member_count desc";
return new CSqlDataProvider($sql, array(
'totalItemCount' => $count,
'sort' => array(
'attributes' => array(
'member_count', 'visitor_count', 'seller_count',
),
),
'pagination' => false