我对through
关系非常困惑。这是我的表格
批次(id,名称)
受试者(ID,BATCH_ID,名称)
老师(ID,姓名)
subject_teacher(subject_id,teacher_id)
关系是
批量HAS_MANY主题
科目BELONGS_TO批次
通过subject_teacher
对MANY_MANY教师进行主题教师MANY_MANY科目通过subject_teacher
不能如何指定获取
的关系我尝试使用through选项,但它似乎不适用于MANY_MANY关系。除了遍历每个主题之外,还有更好的方法吗?
编辑: 我知道我可以通过教师模型中的功能获得教师的科目
public function getBatches()
{
$batches=array();
foreach($this->subjects as $subject)
$batches[]=$subject->batch;
return $batches;
}
现在我可以通过引用$teacher->batches
来获得一批教师。但我需要一个更清晰的关系,如解决方案,以便代码中的某些地方我可以发表如Teacher::model()->with('batches')->findAll()
答案 0 :(得分:0)
我认为这是循环播放主题的唯一方法。除非你没有通过活动记录这样做。
//pseudo code....
Teacher=new Teacher::model()->with('subject.batch')->find();
subjects=Teacher->subjects;
for(subjects as subject){
batch=subejct->batch;
}
直通关系只适用于一个或多个案例,而不是多个案例。