如何从两个数据库中显示一个CGridView

时间:2013-04-02 06:34:30

标签: php yii multiple-databases cgridview

我试图在一个CGridView中显示两个数据库表源。 2个表是reg.students和login.user .. 我的学生模特关系是,

public function relations()
{

     Yii::app()->getModule('user');
    return array(
        'royaltyOutstandings' => array(self::HAS_MANY, 'RoyaltyOutstanding', 'studentID'),
        'srkMedicalInfos' => array(self::HAS_MANY, 'SrkMedicalInfo', 'studentID'),
        'parents' => array(self::HAS_ONE, 'SrkParents', 'studentID'),
        'srkStudentWorksheets' => array(self::HAS_MANY, 'SrkStudentWorksheet', 'studentID'),
        'user' => array(self::BELONGS_TO, 'User', 'centre_id'),
    );
}

在用户模块中,

public function tableName()
{ return 'login.user'; }

在cgridview columns数组中,

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'students-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
            array(
        'header' => 'No.',
        'value' => '$row+1',
    ),
     array('name' => 'user.centre_id',
    'value'=>'$data->user->centre_id',
    ), 
    '... // & so on

控制器操作是,

    public function actionAdmin()
{   
    $this->layout = 'column3';
    $form = new Reports ;
    $model=new Students('search');
    $model->unsetAttributes();  // clear any default values
    if(isset($_GET['Students']))
        $model->attributes=$_GET['Students'];

    $this->render('admin',array(
        'model'=>$model,
        'form'=>$form,
    ));
}

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望在gridview中显示一个或多个关系。 如果这是您想要的,请查看本教程:http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/ 本教程不仅向您展示如何在gridview中显示关系,还向您展示如何对数据进行排序和过滤。祝你好运!