如何在 Laravel 中为 Pivot 模型绑定用户路由模型
How to user route model binding in Laravel for Pivot model
Laravel v: 5.7
PHP v: 7.2.10
路由路径为:admin/apartments/{apartment}/associations/{association}/association-users/{association_user}
获取 URL:http://127.0.0.1:8000/admin/apartments/1/associations/1/association-users
枢轴模型:AssociationUser
在App\Providers\RouteServiceProvider
中,我添加了
public function boot()
{
parent::boot();
Route::bind('association-user', function ($value) {
return App\pivotes\AssociationUser::where('association_id', request()->route()->parameter('association')->id)->where('user_id', auth()->id())->first() ?? abort(404);
});
}
路线创建
route('apartments.associations.association-users.show', ['apartment' => $associationUser->association->apartment, 'association' => $associationUser->association, 'association_user' => $associationUser ])
如果我没记错association_user pivot table 应该有 association_id 和 user_id 并且两者的组合将是唯一的,所以在你的路线中已经有 {association}
模型,所以我相信你可以使用
public function getRouteKeyName()
{
return 'user_id';
}
在你的枢轴模型 class 中,这样 user_id 就会出现在你的 url 中,你将拥有关联和用户模型的组合。
你不需要
Route::bind('association-user', function ($value) {
return App\pivotes\AssociationUser::where('association_id', request()->route()->parameter('association')->id)->where('user_id', auth()->id())->first() ?? abort(404);
});
在你的App\Providers\RouteServiceProvider
Laravel v: 5.7
PHP v: 7.2.10
路由路径为:admin/apartments/{apartment}/associations/{association}/association-users/{association_user}
获取 URL:http://127.0.0.1:8000/admin/apartments/1/associations/1/association-users
枢轴模型:AssociationUser
在App\Providers\RouteServiceProvider
中,我添加了
public function boot()
{
parent::boot();
Route::bind('association-user', function ($value) {
return App\pivotes\AssociationUser::where('association_id', request()->route()->parameter('association')->id)->where('user_id', auth()->id())->first() ?? abort(404);
});
}
路线创建
route('apartments.associations.association-users.show', ['apartment' => $associationUser->association->apartment, 'association' => $associationUser->association, 'association_user' => $associationUser ])
如果我没记错association_user pivot table 应该有 association_id 和 user_id 并且两者的组合将是唯一的,所以在你的路线中已经有 {association}
模型,所以我相信你可以使用
public function getRouteKeyName()
{
return 'user_id';
}
在你的枢轴模型 class 中,这样 user_id 就会出现在你的 url 中,你将拥有关联和用户模型的组合。
你不需要
Route::bind('association-user', function ($value) {
return App\pivotes\AssociationUser::where('association_id', request()->route()->parameter('association')->id)->where('user_id', auth()->id())->first() ?? abort(404);
});
在你的App\Providers\RouteServiceProvider