2

我想设置一个 CGridView。我希望在一个视图中显示来自 2 个不同表的数据。数据来自一个名为 student 的表和另一个名为 employee 的表。

员工由学生推荐(reg_no)

学生桌

reg_no(主键) s_name 部门 f_name

员工表

e_no(主键) e_name 设计工资 reg_no(外键)

我想在单个网格视图中显示来自学生的 (reg_no,s_name,f_name) 和来自员工表的 (design,salary),任何人都可以给出一个想法或任何教程,

4

1 回答 1

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(),
 .......
 .......

向您的模型添加另一个搜索条件,将数据作为 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 是如何为您处理所有这些的。这是另一个很好的例子,同样来自 Yii 框架站点

于 2012-05-28T11:41:28.413 回答