Laravel pivot:从withPivot获取模型()

xon*_*ous 7 pivot laravel eloquent

我正在使用Laravel 4构建一个应用程序,但偶然发现了数据透视表的问题.

我有一个用户模型,一个建立模型和一个studyLevel模型.

暂时找到用户所在的机构,我在我的用户模型中使用以下代码:

public function establishments()
{
    return $this->belongsToMany('Establishment')->withPivot('start', 'stop', 'study_level_id')->withTimestamps();
}
Run Code Online (Sandbox Code Playgroud)

establish_user(pivot)表包含以下列:

id | establishment_id | user_id | start | stop | study_level_id
Run Code Online (Sandbox Code Playgroud)

要获取用户的企业列表,我在控制器中使用以下内容:

$establishments = $user_repo->find($user_id)
                ->with(['establishments', 'establishments.userSubjects' => function ($query) use ($user)
                {
                    $query->where('user_id', $user->id);
                }])
                ->get();
Run Code Online (Sandbox Code Playgroud)

我的问题是响应给了我studylevel的ID,但是我希望得到来自studyLevel模型的信息.是否可以使用withPivot()从studyLevel表中获取信息?

在此先感谢,所有的帮助表示赞赏.

oll*_*ead 3

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

只需建立一个模型Establishment\User,然后让它处理关系。