Yii Grid View显示两个模型的数据

时间:2014-02-03 13:11:07

标签: php mysql sql yii

我在Yii继承了同事(他生病了)的工作,我必须完成它。我以前从未与Yii合作,今天必须完成工作(幸运的是我)。

简而言之,我需要创建一个列表,向用户数据显示所有用户。我的问题是部分数据不在“用户”表中。存在“类别”表,其中包含ID和CATEGORY NAME,“users”表具有“category”列,该列具有该用户的类别ID。 我的列表中需要的是类别名称,而不是id。

我现在认为的是:

    $dataProvider = $dataProvider=new CActiveDataProvider('users');
    $this->widget('bootstrap.widgets.TbExtendedGridView', array(
    'fixedHeader' => true,
    'headerOffset' => 40, // 40px is the height of the main navigation at bootstrap
    'type' => 'striped bordered condensed',
    'dataProvider' => $dataProvider,
    'responsiveTable' => true,
    'template' => "{pager}{summary}{items}{summary}{pager}",
    'columns' => array(
            'id',
            'username',
        ),
    ));

我需要添加列“类别”,但我不知道如何从该表中获取类别名称。 我有2个型号。 1个模型是users.php模型,它几乎是空的:

class users extends CActiveRecord {
    public $dump;

    public static function model($className=__CLASS__) {
        return parent::model($className);
    }
}

和具有几乎相同数据的类别模型:

class category extends CActiveRecord {
    public $dump;

    public static function model($className=__CLASS__) {
        return parent::model($className);
    }
 }

有没有办法通过CActiveDataProvider获取数据,或者我必须手动破解它?

1 个答案:

答案 0 :(得分:1)

在你的用户模型中,你应该有一个如下所示的relations()方法:

public function relations()
{
    return array(
        'category' => array(self::BELONGS_TO, 'category', 'category_id'),
    );
}

然后你可以像这样使用它:

$user->category->name;