我想设置一个CGridView。我想在一个视图中显示来自2个不同表的数据。数据来自名为student的表,另一个名为employee。
员工由学生(reg_no)
审核reg_no(主键) S_NAME 部门 f_name
e_no(主键) e_name DESIG 薪水 reg_no(外键)
我想在一个网格视图中显示学生的(reg_no,s_name,f_name)和员工表中的(设计,工资),任何人都可以提出想法或任何教程,
答案 0 :(得分:8)
首先确保正确定义了模型和关系。检查模型以确保存在关系。 例如您的员工模型中应该有这样的条目;
function relations() {
return array(
'reg_no'=>array( self::BELONGS_TO, 'Student', 'reg_no' ),
);
}
在CGridView中使用CActiveDataProvider而不是数组作为数据源。
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->searchEmplyees(),
.......
.......
在模型中添加另一个搜索cirteria,将数据作为CActiveDataProvider返回。
public function seachEmployees()
{
$criteria=new CDbCriteria;
$criteria->alias = 'i';
$criteria->compare('id',$this->id);
.......
.......
$criteria->join= 'JOIN 'your table name' d ON (i.id=d.id)';
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'order_in_sna ASC',
),
));
}
我刚输入此代码供您参考,以便您了解Yii如何为您处理所有这些问题。 This is another good example, again from the Yii Framework site