Yii CGridView DataProvider

raf*_*235 0 php yii

我有两个模型:项目和用户.在项目中:

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
            "users"=>array(self::MANY_MANY, 'User',
            'projects_users(project_id, user_id)'),
    );
}
Run Code Online (Sandbox Code Playgroud)

我想列出实际项目中的所有用户,$ model包含实际项目:

    <?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'user-grid',
    'dataProvider'=>$model->users,
    'columns'=>array(
        'ID',
        'username',
        'displayname',
        'firstname',
        'lastname',
        'email',
        /*
        'password',
        'isAdmin',
        */

        array(
            'class'=>'CButtonColumn',
            'template'=>'{delete}',
        ),
    ),
)); ?>
Run Code Online (Sandbox Code Playgroud)

不幸的是我收到了一个错误:

Fatal error: Call to a member function getData() on a non-object in /var/www/vhosts/aevers.com/editor/framework/zii/widgets/CBaseListView.php on line 107
Run Code Online (Sandbox Code Playgroud)

Chr*_*run 5

那是因为$ model-> users不是CActiveDataProvider:它是一个CActiveRecords 数组.

尝试使用CArrayDataProvider:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'user-grid',
    'dataProvider'=> new CArrayDataProvider($model->users),
    [...] 
    ),
)); ?>
Run Code Online (Sandbox Code Playgroud)