Laravel 关系,hasmany 和 blongstomany

Posted

技术标签:

【中文标题】Laravel 关系,hasmany 和 blongstomany【英文标题】:Laravel relationships, hasmany and then blongstomany 【发布时间】:2021-12-14 01:17:36 【问题描述】:

大家好,我有一个关于多重关系的问题。

我有 3 张桌子:

students - id, username, pass
teachers - id, username, pass
periods - id, teacher_id, name

和 student_period 多对多。

这就是数据库的样子:https://i.imgur.com/MXxLmQj.png

我想做的是我想让老师的所有学生都通过时期,还没有见过这样的关系谁这样做,知道怎么做吗?

【问题讨论】:

【参考方案1】:

设置教师和时期hasManybelongsTo的关系

设置学生和时期的关系为belongToManybelongsToMany

那么你可以像这样获取特定老师的学生

$teacherId = 1;
$students = Student::whereHas('periods.teacher', function($teacherQueryBuilder) use ($teacherId) 
    $teacherQueryBuilder->where('id', $teacherId);
)->get();

【讨论】:

以上是关于Laravel 关系,hasmany 和 blongstomany的主要内容,如果未能解决你的问题,请参考以下文章

Laravel按hasmany关系排序

Laravel updateOrCreate 与 hasMany 关系

如何在 Laravel 的 hasMany 关系中使用 groupBy

Laravel Eloquent 中的多级深度 hasMany 关系

Laravel hasMany通过多态关系

Laravel 关系查询加载 hasMany + BelongsToMany