Laravel通过多对多关系引用一对多表
我正经历着最艰难的时刻,我不确定问题是关系还是什么。我有一个“用户”表,它与“实践”表有多对多关系(通过透视表)。然而,机构与“医生”表有一对多的关系,其中一个机构可以有多个医生,但一个医生只能属于一个机构。然后,我在医生和“患者”表之间也有一个多对多的关系,我需要运行计数和按日期计数之类的查询 目前,它被设置为用户可以通过在practices上运行foreach循环,然后在$practices->doctors上运行foreach循环来查看他们的医生。但这并不是最优的,因为医生不能按字母顺序排序。有没有人能帮我弄清楚,我如何在不需要额外的foreach循环的情况下直接推荐医生 这是我当前的代码。提前谢谢 dashboard.blade.phpLaravel通过多对多关系引用一对多表,laravel,eloquent,Laravel,Eloquent,我正经历着最艰难的时刻,我不确定问题是关系还是什么。我有一个“用户”表,它与“实践”表有多对多关系(通过透视表)。然而,机构与“医生”表有一对多的关系,其中一个机构可以有多个医生,但一个医生只能属于一个机构。然后,我在医生和“患者”表之间也有一个多对多的关系,我需要运行计数和按日期计数之类的查询 目前,它被设置为用户可以通过在practices上运行foreach循环,然后在$practices->doctors上运行foreach循环来查看他们的医生。但这并不是最优的,因为医生不能按字母顺序排
@foreach ($practices as $practice)
@foreach ($practice->doctors as $doctor)
Doctor Name: {{$doctor->full_name}}
Patient Count: {{$doctor->patients()->count()}}
@endforeach
@endforeach
DashboardController.php
$practices = User::find(Auth::user()->id)->practices();
return view('dashboard')->withPractices($practices);
您的场景没有预定义的雄辩关系。但我们可以用另一种关系建立一种关系 我相信您已经在“用户模型”中创建了与“实践”的关系,在“实践模型”中创建了与“医生”的关系
// in User Model
public function practices()
{
return $this->belongsToMany(Practices::class);
}
// in Practice Model
public funcion doctors()
{
return $this->hasMany(Doctor::class);
}
您需要在“用户模型”中建立“医生”关系
// in User Model
public function doctors()
$this->load(['practices.doctors' => function($query) use (&$relation) {
$relation = $query;
}]);
return $relation;
}
现在你可以为这样的“用户”找“医生”
$doctors = User::find(Auth::user()->id)->doctors;
您可以通过“跳过”
practices
表来创建直接关系:
类用户扩展模型{
公共职能医生(){
返回$this->belongtomany(
医生:同学们,
“实践用户”,
无效的
“实习医生”,
无效的
“练习id”
);
}
}