我认为这不可能在Laravel,但我仍然会问它;)
我有Group
模型,它具有与group_user
的轴心关系(通过User
)。我有一个组控制器,这是索引方法:
public function index(Request $request)
{
return $request->user()->groups;
}
groups
中的 User
是belongsToMany
关系。它将加载与用户有关系的所有组。这也将以枢轴关系加载数据透视表。
但现在我想得到一个组,这是一个控制器来获得一个具有枢轴关系的组:
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;
}
答案 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;
}