crescent 2012-07-25 16:12:43 2709次浏览 1条回复 0 0 0

我直接用 sql 语句进行了查询:

$db = Yii::app()->db;               
$sql = 'select type from tableA';
$results = $db->createCommand($sql)->queryAll();

这样得到了 $results 为 CDbDataReader,我想用 CGridView 显示它,查了一下是需要转换成 CArrayDataProvider,在如下页面:

http://yii.hugphp.com/wiki/224/using-a-cdbdatareader-sql-query-result-in-a-zii-widget-such-as-cgridview-or-clistview

我照做了,如下

$dataProvider = new CArrayDataProvider(
                $results,
                array(
                        'id'=>'myDataProvider',
                        'sort'=>array(
                                'attributes'=>array(
                                        'type',
                                ),
                        ),
                        'pagination'=>array( 
                                'pageSize'=>20,
                        ),
                ),
        );

可是写了这一句以后,页面就不显示数据了,删除就显示,并且我使用 foreach 循环 $results 能看见肯定是已经查出了数据的,只是在转换的时候出错了。

请问应该如何修改呢?

  • 回复于 2012-07-26 00:33 举报
    $rawData=Yii::app()->db->createCommand('SELECT * FROM tbl_user')->queryAll();
      // or using: $rawData=User::model()->findAll();
      $dataProvider=new CArrayDataProvider($rawData, array(
          'id'=>'user',
          'sort'=>array(
              'attributes'=>array(
                   'id', 'username', 'email',
              ),
          ),
          'pagination'=>array(
              'pageSize'=>10,
          ),
      ));
    // $dataProvider->getData() will return a list of arrays.
    

    这里有一个例子。

您需要登录后才可以回复。登录 | 立即注册