我在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获取数据,或者我必须手动破解它?
答案 0 :(得分:1)
在你的用户模型中,你应该有一个如下所示的relations()方法:
public function relations()
{
return array(
'category' => array(self::BELONGS_TO, 'category', 'category_id'),
);
}
然后你可以像这样使用它:
$user->category->name;