hasManyThrough - Laravel 5.8
Posted
技术标签:
【中文标题】hasManyThrough - Laravel 5.8【英文标题】: 【发布时间】:2021-03-18 09:57:17 【问题描述】:我的数据库表结构如下:
教室
id (int) PK 名称(varchar)课堂教师课程
id (int) PK id_clas-s-room (int) FK id_teacher (int) FK id_course (int) FK课程
id (int) PK 课程名称(varchar)老师
id (int) PK teacher_name (varchar)到目前为止,我只有调用 ClassRoom 表和 ClassTeacherCourse 的代码,例如:
$class = Class::find($id)
->with(['classcourseteacher'])
->get();
Class
模型中的关系:
public function classcourseteacher()
return $this->hasMany('App\ClassCourseTeacher', 'id_class', 'id');
结果:
[
"id": 57,
"id_school": 2,
"class_name": "7 I",
"classcourseteacher": [
"id": 406,
"id_class": 57,
"id_course": 9,
"id_teacher": 68,
"created_at": "2020-11-10 16:11:14",
"updated_at": "2020-11-10 16:11:14"
,
"id": 434,
"id_class": 57,
"id_course": 11,
"id_teacher": 66,
"created_at": "2020-11-10 16:11:14",
"updated_at": "2020-11-10 16:11:14"
,
]
]
我已经阅读了 Eloquent: Relationships 关于 hasManyThrough
的内容,但在文档中与我的情况不同。
如何通过 Eloquent 调用 1 次:与课程和教师详细信息的关系?
【问题讨论】:
【参考方案1】:在ClassTeacherCourse
课堂放老师和课程的关系
function teacher()
return $this->belongsTo(Teacher::class);
function course()
return $this->belongsTo(Course::class);
然后你可以这样调用它来获取详细信息
$class = Class::find($id)
->with(['classcourseteacher.teacher', 'classcourseteacher.course'])
->get();
【讨论】:
以上是关于hasManyThrough - Laravel 5.8的主要内容,如果未能解决你的问题,请参考以下文章
Laravel:如何平均嵌套 hasMany 关系(hasManyThrough)
Laravel 5 hasManyThrough 数据透视表
Laravel 5 hasManyThrough 重复行内容