1

我有一个关于如何计算表格元素并使用 grid.CGridView 显示它们的问题。

我有两个表,教师(id,teachername)和学生(id,teacher_id,name,reg_date -a datatime register-)。

这两个表与一个外键相关,所以文件\protected\models\students.php 包括:

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
    'teacher' => array(self::BELONGS_TO, 'Teachers', 'teacher_id'),
            );
    }

我想为每个老师显示一行,其中每一列将是他的 id、teachername、老师的学生人数、最后一个学生注册的课程和注册日期(我的意思是学生 reg_date)。

我在文档 \protectec\views\Teachers\index.ph 中有一个 grid.CGridView

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
            'id',
            'teachername'
    ),
)); ?>

所以我想知道我必须在 grid.CGridView 中写入来显示这些元素。如您所见,我不知道如何引用另一个表。

拜托,我需要你的帮助。谢谢!

4

1 回答 1

2

在您的教师模型中添加以下关系:

public function relations()
{
    return array(
        'students'=>array(self::HAS_MANY, 'Student', 'teacher_id'),
        'studentCount'=>array(self::STAT, 'Student', 'teacher_id'),
        'lastStudent'=>array(self::HAS_ONE, 'Student', 'teacher_id', 'order'=>'reg_date desc'),
    );
}

在网格视图中:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
            'id',
            'teachername',
            'studentCount',
            'lastStudent.name',
            'lastStudent.regDate'
    ),
));
?>
于 2013-08-27T13:48:12.743 回答