php - 如何在 Yii 中实现 CArrayDataProvider

标签 php mysql arrays yii cgridview

我是 Yii 新手。我正在使用 CArrayDataProvider 在 CGridView 中传递数据,但收到未定义 id 的错误。你能帮我检查一下我是否遗漏了什么吗?

index.php(查看)

$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $arrayDataProvider,
'columns' => array(
    array(
        'name' => 'LastName',
        'type' => 'raw',
                        'value' => 'CHtml::encode($data["LastName"])'
    ),
    array(
        'name' => 'FirstName',
        'type' => 'raw',
        'value' => 'CHtml::link(CHtml::encode($data["FirstName"])',
    ),
),
));

RecordsController.php

public function actionIndex()
{  

        $data = new TblAccountdetails();
        $rawData = $data->getAllData();
        $arrayDataProvider=new CArrayDataProvider($rawData, array(
                'id'=>'id',
                'pagination'=>array(
                        'pageSize'=>10,
                ),
        ));

        $params =array(
                'arrayDataProvider'=>$arrayDataProvider,
        );

        if(!isset($_GET['ajax'])) $this->render('index', $params);
        else  $this->renderPartial('index', $params);
}

我的模型函数

public function getAllData()
    {
         $user = Yii::app()->db->createCommand()
            ->select('AID, LastName, FirstName')
            ->from('tbl_accountdetails')
            ->queryAll();
        return $user;
    }

$arrayDataProvider 的 Vardump

  object(CArrayDataProvider)#32 (11) {
  ["keyField"]=>
  string(2) "id"
  ["rawData"]=>
  array(3) {
    [0]=>
    array(3) {
      ["AID"]=>
      string(1) "1"
      ["LastName"]=>
      string(8) "Floresca"
      ["FirstName"]=>
      string(5) "Joene"
    }
    [1]=>
    array(3) {
      ["AID"]=>
      string(1) "2"
      ["LastName"]=>
      string(13) "aaaaaaaaaaaaa"
      ["FirstName"]=>
      string(12) "aaaaaaaaaaaa"
    }
    [2]=>
    array(3) {
      ["AID"]=>
      string(1) "3"
      ["LastName"]=>
      string(7) "Antonio"
      ["FirstName"]=>
      string(4) "Noel"
    }
  }
  ["caseSensitiveSort"]=>
  bool(true)
  ["_id":"CDataProvider":private]=>
  string(2) "id"
  ["_data":"CDataProvider":private]=>
  NULL
  ["_keys":"CDataProvider":private]=>
  NULL
  ["_totalItemCount":"CDataProvider":private]=>
  NULL
  ["_sort":"CDataProvider":private]=>
  NULL
  ["_pagination":"CDataProvider":private]=>
  object(CPagination)#33 (9) {
    ["pageVar"]=>
    string(7) "id_page"
    ["route"]=>
    string(0) ""
    ["params"]=>
    NULL
    ["validateCurrentPage"]=>
    bool(true)
    ["_pageSize":"CPagination":private]=>
    int(10)
    ["_itemCount":"CPagination":private]=>
    int(0)
    ["_currentPage":"CPagination":private]=>
    NULL
    ["_e":"CComponent":private]=>
    NULL
    ["_m":"CComponent":private]=>
    NULL
  }
  ["_e":"CComponent":private]=>
  NULL
  ["_m":"CComponent":private]=>
  NULL
}

我不知道从哪里得到未定义的 id 错误:(

最佳答案

1.一个方法就是改变

->select('AID、姓氏、名字')

进入

->select('AID as id, LastName, FirstName')

2.你也可以这样设置keyField

$arrayDataProvider=new CArrayDataProvider($rawData, array(
            'id'=>'nameThisProvider',
            'keyField' => 'AID'
            'pagination'=>array(
                    'pageSize'=>10,
            ),
));

3.你可以使用CSqlDataProvider

关于php - 如何在 Yii 中实现 CArrayDataProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23987977/

相关文章:

php - 在 MySql 和 PHP 中插入随机数据以进行基准测试

c++ - 如何从初始化列表中分配一个数组?

javascript - 寻找未定义值的正确方法是什么

javascript - 在 Laravel 中混合使用 PHP 和 Javascript

php - Laravel Eloquent 加入奇怪的查询

php - 通过php将excel时间字段导入mysql

javascript - 销毁对象的嵌套数组 javascript

php - echo 显示$内容

php - Yii 2.0 $request->post() 问题

php - MySQL的性能