1

我对这种关系感到非常困惑through。这是我的桌子

批次(ID,名称)

主题(id,batch_id,名称)

老师(身份证,姓名)

subject_teacher(subject_id,teacher_id)

关系是

批处理 HAS_MANY 主题

科目 BELONGS_TO 批次

主题 MANY_MANY 教师通过 subject_teacher

教师 MANY_MANY 科目来自 subject_teacher

不,我如何指定获取的关系

  1. 一批教师
  2. 分配给教师的批次

我尝试使用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()

4

1 回答 1

0

我认为这是遍历主题的唯一方法。除非你不通过活动记录来做。

  //pseudo code....
  Teacher=new Teacher::model()->with('subject.batch')->find();
  subjects=Teacher->subjects;
  for(subjects as subject){
      batch=subejct->batch;
  }

直通关系只能应用于一对多或一对一的情况,而不是多对多。

于 2012-07-21T16:56:26.753 回答