Laravel pivot:从withPivot获取模型()

时间:2014-08-18 12:03:29

标签: laravel pivot eloquent

我正在使用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表中获取信息

提前致谢,感谢所有帮助。

1 个答案:

答案 0 :(得分:1)

执行此操作的理想方法是专门为您的数据透视表创建一个模型。有一些替代方案,您可以使用字段pivot_study_level_id在模型中定义关系,但这并不适用于所有情况,并且可能比它的价值更麻烦。

只需设置类似Establishment\User的模型,然后让它处理关系。