Как использовать привязку модели маршрута в Laravel для модели Pivot - PullRequest
0 голосов
/ 11 января 2019

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 ])

1 Ответ

0 голосов
/ 14 января 2019

Если я не ошибаюсь, сводная таблица association_user должна иметь association_id и user_id, и их комбинация будет уникальной, поэтому в вашем маршруте уже есть модель {association}, поэтому я считаю, что вы можете использовать

public function getRouteKeyName()
{
    return 'user_id';
}

в вашем классе модели pivot, так что 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

...