首页 > 解决方案 > Laravel 按值从 api 获取数据

问题描述

我正在使用 Laravel/Passport 并且已经可以通过以下方式获取数据id

api.php/Controller.php

Route::get('members/{member}', 'MemberController@show');

public function show(Member $member)
{
    return $member;
}

这只是返回所有数据id,现在我想通过电话号码获取成员,所以我创建了:

Route::get('members/{phone}', 'MemberController@phone');

public function phone(Member $member)
{
    return $member;
}

错误:

异常:“Symfony\Component\HttpKernel\Exception\NotFoundHttpException”文件:“C:\Users\xx\xx\xx\xx\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php”行:204消息:“模型 [App\Member] 2929292222 没有查询结果”

标签: phplaravel

解决方案


路线

Route::get('members/{phone}', 'MemberController@phone');

控制器

public function phone(Member $member)
{
    return $member;
}

转到Member.php model 并添加此方法getRouteKeyName

public function getRouteKeyName()
{
  return 'phone';
}

Laravel 默认会自动注入 ID 与请求 URI 中相应值匹配的模型实例。

如果您希望模型绑定使用数据库列而不是id在检索给定模型类时,您可以覆盖getRouteKeyNameEloquent 模型上的方法:

有关更多信息,请查看文档


推荐阅读