Проблема заключается в том, что ваш контроллер пытается найти пользователей, используя {id}, и маршрут пытается найти их с помощью {username}.
Решение 1: В вашем методе шоу в контроллере, попытаться найти пользователей по их имени пользователя и настроить код немного, что-то вроде этого:
public function show($username)
{
$user = User::whereUsername($username)->whereActivated(true)->first();
$user->access_counter++;
$user->save();
$this->title($user->username);
$this->pageView('users::show', compact('user'));
}
Решение 2:
Вы можете изменить приложение/провайдеров/метод загрузки RouteServiceProvider.php в:
public function boot(Router $router)
{
parent::boot($router);
$router->bind('username',
function ($username)
{
return \App\User::where('username', $username)->firstOrFail();
}
);
}
Тогда можно ввести-намекает модель пользователя в качестве аргумента в методе показа вашего контроллера
public function show(App\User $user)
{
return view('users.show', compact('user'));
}
Laravel будет связывать модели пользователя с заданным именем пользователя автоматически для вас в любом маршруте можно указать {username}
заполнитель и тип- Подскажите это в методе контроллера.
Если вы привязываете, вам не нужно будет выполнять findOrFail() или whereUsername() вручную.
Если вы столкнулись с проблемами с изменениями не совершаются, попробуйте сделать: php artisan route:cache
& php artisan optimize --force
Вы не смешивать идентификатор с логином, например? Пользователь 'test' существует в вашем db? –
Да пользователь существует в db –