获取教师的学生人数


  • teachercourse具有一对多关系。

  • 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()

相关内容

  • 没有找到相关文章

最新更新