我在构建 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
。
如果您希望 Laravel 使用列 userName
选择用户,您应该在路由中自定义列名称。
在你api.php:
Route::get('user-profile/user/{user:userName}', 'UserProfileController@getUserProfile');
假设您的
userName
在表中是唯一的,那么在您的控制器中您应该使用:
public function getUserProfile(User $user)
{
$userId = $user->id;
...
}
这将自动为您处理 404 错误,而不是 this 答案。
默认情况下,路由模型绑定搜索
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"
}