Laravel隐式绑定用户的枢轴关系

时间:2017-11-28 19:46:07

标签: laravel eloquent

我认为这不可能在Laravel,但我仍然会问它;)

我有Group模型,它具有与group_user的轴心关系(通过User)。我有一个组控制器,这是索引方法:

public function index(Request $request)
{
    return $request->user()->groups;
}
groups中的

UserbelongsToMany关系。它将加载与用户有关系的所有组。这也将以枢轴关系加载数据透视表。

但现在我想得到一个组,这是一个控制器来获得一个具有枢轴关系的组:

public function show($id, Request $request)
{
    $group = $request->user()->groups()->findOrFail($id);
    $this->authorize('view', $group); // Authorization....

    return $group;
}

但我想像这样使用Implicit绑定:

public function show(Group $group)
{
    $this->authorize('view', $group);

    return $group;
}

但它不会加载数据透视表,因为我没有通过用户得到它...
所以我应该通过用户获得该组。但是我怎么能用隐式绑定来做呢?

如果无法做到这一点:当我已经拥有群组模型时,如何加载枢轴关系?

public function show(Group $group, Request $request)
{
    // Load the pivot relation here in $group by using the user in $request->user()? 
    $this->authorize('view', $group);

    return $group;
}

1 个答案:

答案 0 :(得分:0)

这是RouteServiceProvider

Route::bind('group', function ($value) {
    if (auth()->check()) {
        return auth()->user()->groups()->findOrFail($value);
    } else {
        abort(404);
    }
});

view政策甚至不需要这种方式,因为该群组来自群组关系:

public function show(Group $group)
{
    return $group;
}