php 如何使用Laravel belongsToMany与透视表和布尔列?

5us2dqdw  于 2023-06-20  发布在  PHP
关注(0)|答案(1)|浏览(144)

我试图在Laravel中使用belongsToMany关系检索数据。所以我有学生和课程模型,他们有一个多对多的关系,但有几门课程是必修的,所以我们不想把它们保存在透视表中,相反,我们有一个布尔列称为必修。现在,我想检索所有用户的所有课程,包括belongsToMany关系中的必修课程。有什么建议吗?

Student
- id
- name
Course
- id
- name
- compulsory
course_student pivot table
- id
- student_id
- course_id
cedebl8k

cedebl8k1#

这看起来很简单,只需在关系定义中使用where即可。如果这不起作用,请分享你的关系是如何定义的。如果你经常把必修课和非必修课分开,我会这样构建我的关系:

class Student extends Model{

   public function courses(): BelongsToMany
{
    return $this->belongsToMany(Course::class);
}

  public function compulsoryCourses(): BelongsToMany
{
    return $this->courses()->where('compulsory', 1);
}

  public function noncompulsoryCourses(): BelongsToMany
{
    return $this->courses()->where('compulsory', 0);
}

相关问题