2013-12-16 27 views
-1

控制器顯示,定製查詢到CGridView在警予

$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(); 

但後來我得到這個錯誤

Fatal error: Call to a member function getData() on a non-object in D:\wamp\www\yii\framework\zii\widgets\CBaseListView.php on line 111

我很困惑,不知道怎麼回事。

回答

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