gpt4 book ai didi

php - Laravel 5.1 用户个人资料链接

转载 作者:行者123 更新时间:2023-11-29 21:49:00 24 4
gpt4 key购买 nike

好的,所以我创建了一个指向用户个人资料的链接。我的 Controller 看起来像这样:

    public function show($id)
{
$user = User::whereId($id)->User::whereUsername($username)->whereActivated(true)->first();

$user->access_counter++;
$user->save();

$this->title($user->username);
$this->pageView('users::show', compact('user'));
}

我的路线文件如下所示:

ModuleRoute::get('users/{username}', 'UsersController@show');

然后我去地址:default.com/users/test,我收到错误:没有模型 [Models\User] 的查询结果。

这就是问题所在吗?谢谢各位的解答!

最佳答案

这里的问题是您的 Controller 尝试使用 {id} 查找用户,而路由尝试使用 {username} 查找用户。

解决方案 1:在 Controller 的 show 方法中,尝试通过用户名查找用户并稍微调整代码,如下所示:

   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:

您可以更改 app/Providers/RouteServiceProvider.php 的启动方法:

public function boot( Router $router )
{
parent::boot( $router );

$router->bind( 'username',
function ( $username )
{
return \App\User::where( 'username', $username )->firstOrFail( );
}
);
}

然后您可以在 Controller 的 show 方法中键入提示 User 模型作为参数

public function show( App\User $user )
{
return view('users.show', compact('user'));
}

Laravel 将在您指定 {username} 占位符的任何路由中自动为您绑定(bind)用户模型与给定的用户名,并在 Controller 的方法中键入提示。

如果您绑定(bind),则无需手动执行 findOrFail() 或 whereUsername()。

如果您遇到未提交更改的问题,请尝试执行以下操作:php artisan 路由:缓存 & php artisan optimization --force

关于php - Laravel 5.1 用户个人资料链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33842919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com