Используя метод ::resource
вы можете диктовать иерархическую схему маршрутизации с помощью .
между вашими моделями, например:
Route::resource('user.list', 'ListController');
Это будет производить что-то вроде этого:
/user/{user}/list/{list}
Однако вы хотите чтобы иметь имя пользователя - это нормально, нам просто нужно добавить некоторые явные привязки модели в вашем App\Providers\RouteServiceProvider
Route::bind('user', function($value)(){
if(is_numeric($value)) {
return User::find($value);
} else {
return User::where('username', $value)->first();
}
});
Добавление этого explicit model binding
будет пытаться разрешить пользователю через dependency injection
сначала ID
, если значение $ является числовым. Если нет, то он попытается сопоставить значение с столбцом имени пользователя в таблице пользователя.
Надеюсь, это поможет.