-
teacher
与course
具有一对多关系。 -
course
属于一个teacher
。 -
student
可以参与多个courses
。 -
course
可以包括多个students
。
根据Laravel标准,我还在模型中编写了接口和关系表。
现在我想在TeachersController
中得到一位老师的学生人数,如果可能的话,得到他的学生名单。
教师模型
public function course()
{
return $this->hasMany(course::class);
}
课程模型
public function teacher()
{
return $this->belongsTo(Teacher::class);
}
public function students()
{
return $this->belongsToMany(Student::class)
->withPivot('start_date', 'cancel_date', 'status');
}
学生模型
public function courses()
{
return $this->belongsToMany(course::class)
->withPivot('status', 'start_date', 'cancel_date');
}
我试图通过教师关系中定义的课程模型和课程模型中定义的学生模型来获得学生名单和人数。但是拉拉威尔犯了一个错误。
public function show(Teacher $teacher)
{
$countStudent = $teacher->course()->get()->students();
dd($countStudent);
}
您可以在此处使用hasManyThrough关系
Teacher.php
public function students() {
return $this->hasManyThrough(Student::class, Course::class);
}
在您的控制器中
public function show(Teacher $teacher){
$countStudent = $teacher->students()->count();
dd($countStudent);
}
public function show(Teacher $teacher)
{
$countStudent = $teacher->course()->students()->get();
dd($countStudent);
}
你不需要在中间使用get方法
如果要计数,请使用count()
而不是get()