如何在laravel中通过用户名查找用户?

问题描述 投票:0回答:2

我在构建 Laravel API 时尝试通过用户名查找用户。这就是我正在尝试的

api.php

Route::get('user-profile/user/{user}', 'UserProfileController@getUserProfile');

控制器

public function getUserProfile(User $user)
{
    $userId = User::where('userName', $user->userName)->first()->id; // I am expecting user id here like "1"
}

这会导致 404 未找到错误。

laravel laravel-7
2个回答
3
投票

默认情况下,路由模型绑定将搜索

id
。 如果您希望 Laravel 使用列
userName
选择用户,您应该在路由中自定义列名称。

在你api.php:

Route::get('user-profile/user/{user:userName}', 'UserProfileController@getUserProfile');

假设您的

userName
在表中是唯一的,那么在您的控制器中您应该使用:

public function getUserProfile(User $user)
{
    $userId = $user->id;
    ...
}

这将自动为您处理 404 错误,而不是 this 答案。


0
投票

默认情况下,路由模型绑定搜索

id
,在您的情况下,您希望通过
username
进行搜索,因此您所需要做的就是从控制器参数中删除依赖注入,如下所示

public function getUserPortfolio($user) // fix it as $user only
{
    $userId = User::where('userName', $user)->first()->id; // I am expecting user id here like "1"
}
© www.soinside.com 2019 - 2024. All rights reserved.