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

How to find user by user name in laravel?

我在构建 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 未找到错误。

默认路由模型绑定搜索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"
}

默认路由模型绑定将搜索 id。 如果您希望 Laravel 到 select 用户使用 userName.

列,您应该自定义路由中的列名称

在你api.php:

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

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

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

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