Yii 如何将多个表值获取到gridview?
我有两个表,我需要过滤这两个表数据并将其放入gridviewYii 如何将多个表值获取到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,
$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对象中的所有数据,但问题是如何访问它?