我正在使用Laravel 4构建一个应用程序,但偶然发现了数据透视表的问题。
我有一个用户模型,一个建立模型,&一个研究水平模型。
暂时找到用户所在的机构我在用户模型中使用以下代码:
public function establishments()
{
return $this->belongsToMany('Establishment')->withPivot('start', 'stop', 'study_level_id')->withTimestamps();
}
establish_user(pivot)表包含以下列:
id | establishment_id | user_id | start | stop | study_level_id
要获取用户的场所列表,我在控制器中使用以下内容:
$establishments = $user_repo->find($user_id)
->with(['establishments', 'establishments.userSubjects' => function ($query) use ($user)
{
$query->where('user_id', $user->id);
}])
->get();
我的问题是响应为我提供了studyLevel的ID,但我希望获得来自studyLevel模型的信息。是否可以使用withPivot()?
从studyLevel表中获取信息提前致谢,感谢所有帮助。
答案 0 :(得分:1)
执行此操作的理想方法是专门为您的数据透视表创建一个模型。有一些替代方案,您可以使用字段pivot_study_level_id在模型中定义关系,但这并不适用于所有情况,并且可能比它的价值更麻烦。
只需设置类似Establishment\User
的模型,然后让它处理关系。