【发布时间】:2016-12-05 12:14:48
【问题描述】:
我想在 laravel 中建立三个表之间的关系。目前我有三种型号
教室,
public function subjects(){
return $this->belongstoMany('Subject','subject_section_classroom');
}
部分,
主题
我的桌子是
classrooms(id, name)
sections(id, name)
subjects(id, name)
subject_section_classroom( id, classroom_id, section_id, subject_id)
在我的教室控制器中,我有
public function assignsubjects($class_id, $section_id){
$classroom = Classroom::find($class_id);
$section = Section::find($section_id);
$subjects = Subject::lists('name','id');
$selected_subjects = $classroom->subjects()->where('section_id', '=', 1);
$subjects = Subject::lists('name','id');
return view('assignedit', compact('classroom','section','subjects', 'selected_subjects'));
}
但我无法从上述关系中获取 selected_subjects。当我尝试获取上述查询的 sql 时(使用 ->toSQL()),我得到了
`"select * from `myschool_subjects` inner join `myschool_subject_section_classroom` on `myschool_subjects`.`id` = `myschool_subject_section_classroom`.`subject_id` where `myschool_subject_section_classroom`.`classroom_id` = ? and `section_id` = ?"`
我不知道我在这里做错了什么。 请帮忙。
【问题讨论】:
-
我知道 Laravel 4 不支持三重表,因此例如这个包 (github.com/jarektkaczyk/Eloquent-triple-pivot) 由 @jarektkaczyk 创建。不确定 Laravel 5 是否存在类似的东西。
-
我认为,您的表格结构有点错误。您能否给我一些表格中的部分和主题示例,以便我更好地理解您的逻辑。
-
实际上我想用它的部分输出一个教室的所有科目。很简单,我想要数据透视表中的课堂科目,其中部分已定义;)