Yii 如何将多个表值获取到gridview?

Yii 如何将多个表值获取到gridview?,yii,Yii,我有两个表,我需要过滤这两个表数据并将其放入gridview $student=new Student; $marks=new AssimentMarks; $criteria_st=new CDbCriteria; $criteria=new CDbCriteria; $criteria->select = 't.st_id,t.st_name,stu.ass_id,stu.marks_cr1,

我有两个表,我需要过滤这两个表数据并将其放入gridview

         $student=new Student;
         $marks=new AssimentMarks;

        $criteria_st=new CDbCriteria;
        $criteria=new CDbCriteria;

        $criteria->select    = 't.st_id,t.st_name,stu.ass_id,stu.marks_cr1,stu.marks_cr2,stu.marks_cr3,stu.marks_cr4,stu.marks_cr5';
        $criteria->join      = 'INNER JOIN assiment_marks stu ON stu.st_id=t.st_id';
        $criteria->condition = 'stu.ass_id=:ass_id';
        $criteria->params    = array(':ass_id'=>Yii::app()->session['modelcrite']['ass_id']);
        $criteria->addInCondition('t.st_id', $studentid);
返回新的CActiveDataProvider($student,array('criteria'=>$criteria,)

但在GridVi中,我们只显示学生数据库值。它显示为。如何将两个模型传递给CActiveDataProvider

数据就是这样显示的

1)架构中的外键 您的assment表应该使用外键引用您的student表,如下所示(假设为SQLite):

2) 使用Gii生成模型: student->models/student.php

assimment\u record->models/AssimentRecord.php

Gii很聪明,可以猜测你的关系:

// AssimentRecord.php looks good! No changes made!
public function relations()
return array(
    'student' => array(self::BELONGS_TO, 'Student', 'student_id'),
);
助教记录属于该学生

3) 调整gii的输出(Student.php) 但Gii并不完美,也不知道你的意图是什么。当前的学生关系(HAS\u MANY)返回一个数组,但我不想处理该数组(因为我很懒!),因此我将其改为HAS\u单关系:

// Student.php
public function relations()
{
    return array(
    // Change this:   'assimentRecords' => array(self::HAS_MANY, 'AssimentRecord', 'student_id'),
    /* into this: */  'assimentRecord'  => array(self::HAS_ONE,  'AssimentRecord', 'student_id'),
    );
}
这个学生有一个助教记录

4) 显示网格: 1) 模式中的外键 您的assment表应该使用外键引用您的student表,如下所示(假设为SQLite):

2) 使用Gii生成模型: student->models/student.php

assimment\u record->models/AssimentRecord.php

Gii很聪明,可以猜测你的关系:

// AssimentRecord.php looks good! No changes made!
public function relations()
return array(
    'student' => array(self::BELONGS_TO, 'Student', 'student_id'),
);
助教记录属于该学生

3) 调整gii的输出(Student.php) 但Gii并不完美,也不知道你的意图是什么。当前的学生关系(HAS\u MANY)返回一个数组,但我不想处理该数组(因为我很懒!),因此我将其改为HAS\u单关系:

// Student.php
public function relations()
{
    return array(
    // Change this:   'assimentRecords' => array(self::HAS_MANY, 'AssimentRecord', 'student_id'),
    /* into this: */  'assimentRecord'  => array(self::HAS_ONE,  'AssimentRecord', 'student_id'),
    );
}
这个学生有一个助教记录

4) 显示网格:
你想干什么?它们有什么关系吗?是的,它们是相关的。它们是三个表作业、作业分数和学生表。我在作业模型作业分数表中做这些事情参考作业表id和学生id。你想做什么?它们有什么联系吗?是的,它们有联系。它们是三张桌子的作业,作业分数和学生表。我在作业模型作业分数表中做这些事情,参考作业表id和学生id。我与学生和助教记录的参考混淆。它说助教记录id参考学生id。可能是我不正确,是我需要更改assment_record.php关系函数吗?请帮助我理解这一点。谢谢双方的FK指的是“assment_record.student_id”。因为关系类型的关系,Yii知道去哪里找。谢谢你的帮助,我尝试了你的例子。我遇到了同样的问题。但我调试了它,看到$dataProvider对象中的所有数据,但问题是我如何访问它?我对学生和助理记录的引用感到困惑。它说助理记录id引用了学生id。可能是我不正确,是我需要更改assment_record.php关系函数吗?请帮助我理解这一点。谢谢双方的FK指的是“assment_record.student_id”。因为关系类型的关系,Yii知道去哪里找。感谢您的帮助,我尝试了您的示例。我遇到了相同的问题。但是我调试了它,看到了$dataProvider对象中的所有数据,但问题是如何访问它?