Php Laravel雄辩:表的两个所有者之间的关系
我有三张表,分别是学生、课程和成绩 年级有两个外键:学生id和课程id,它属于两个表Php Laravel雄辩:表的两个所有者之间的关系,php,laravel,eloquent,relationship,Php,Laravel,Eloquent,Relationship,我有三张表,分别是学生、课程和成绩 年级有两个外键:学生id和课程id,它属于两个表 class Grade extends Model { public function student() { return $this->belongsTo('App\Student'); } public function course() { return $this->belongsTo('App\Course');
class Grade extends Model
{
public function student()
{
return $this->belongsTo('App\Student');
}
public function course()
{
return $this->belongsTo('App\Course');
}
}
此外,学生和课程有许多等级:
class Student extends Model
{
public function grades()
{
return $this->hasMany('App\Grade');
}
}
及
现在,我想在学生和课程之间建立一个关系,例如,对于学生1,我想检索所有有分数的课程。类似这样但不正确:
$student1->grades->course
我只会写
@foreach($student1->grades as $grade)
$grade->course
@endforeach
但我不想要它,我想要在我的foreach循环中有
($courses as$course)
。我建议您需要参考链接来实现这一点
在学生模式中添加hasManyThrough关系
public function courses()
{
return $this->hasManyThrough(
'App\Course',
'App\Grade',
'course_id', // Foreign key on Grade table...
'id', // Foreign key on Course table...
'id', // Local key on Student table...
'student_id' // Local key on Grade table...
);
}
我没有测试这段代码,但是,这就是让成绩表成为学生和课程之间多对多关系的透视表的方法
class Student
{
// an alternative name could be gradedCourses.
public function courses()
{
return $this->belongsToMany(Course::class, 'grades');
}
}
因此,您可以通过此关系直接访问课程
@foreach($student->courses course)
$course->name
@endforeach
@foreach($student->courses course)
$course->name
@endforeach