【问题标题】:How to display one CGridView from two databases如何显示来自两个数据库的一个 CGridView
【发布时间】:2013-04-02 06:34:30
【问题描述】:

我正在尝试在一个 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 列数组中,

$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,
    ));
}

【问题讨论】:

  • yiiframework.com/doc/api/1.1/CArrayDataProvider - 它可以从您想要的任何数据源提供您想要的任何数据
  • @RuslanPolutsygan,谢谢你的信息.. 让我检查这个链接 n 再次回归
  • 能否提供两个数据库之间连接的示例代码
  • 您说您已经连接到两个数据库。只需使用普通 SQL 或 ActiveRecord 检索您需要的信息,将其放入数组中,用 CArrayDataProvider 包装并为CGridView 中的dataProvider 属性提供它。也许您需要执行多个查询(因为您的数据在多个数据库之间拆分)。
  • 通过纯 sql,我可以从表中获取结果,我试图将这两个表显示到单个 gridview 中。

标签: php yii multiple-databases cgridview


【解决方案1】:

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

【讨论】:

  • 非常感谢您的回复,我尝试了这些,据我所知.. 实际上在我的 gridview 中试图显示来自 database1.table1 和 database2.table2 的相关数据,其中 table2 在 modules-> 模型下。 .当我尝试获取table2的值时,它给出了null。我不知道如何从 database2.table2 中获取数据
  • 好的,那么您想从不同的数据库中获取表 2 中的数据吗?如果是这样,您是否连接到第二个数据库,因为据我所知,Yii 本身并没有这样做。
  • @JelledeFries,是的,我已经连接了两个数据库,我对两个数据库表都做了一些功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多