【发布时间】:2015-08-19 10:00:39
【问题描述】:
我需要在数据透视表中关联三个模型:用户、学生、计划。因此,每个用户都可以为学生订阅一个计划。
到目前为止,我发现为两个模型创建一个数据透视表,比如用户和计划,并将 student_id 作为额外字段附加:
$user->plans()->attach([1 => ['student_id' => $student_id]);
这样做的一个问题是,如果我尝试检索特定用户的计划,我不会得到学生模型,只有 id,所以:
return $this->BelongsToMany('App\Plan', 'plans_students_users', 'user_id', 'plan_id')
->withPivot('student_id');
所以,我必须进行第二次查询才能获得学生模型。
考虑到我想在各个方向进行查询,还有其他方法可以解决吗,例如:
$user->plans() (attaching the students)
$student->plans() (attaching the user)
$plan->users() (attaching the students)
$plan->students() (attaching the users)
【问题讨论】:
标签: laravel eloquent laravel-5