Php 如何在laravel 5.6中访问基于api auth的模型方法?

Php 如何在laravel 5.6中访问基于api auth的模型方法?,php,laravel,laravel-5.6,Php,Laravel,Laravel 5.6,我有用户汽车,在用户和汽车之间有多对多的关系。我正在使用passport,在我的系统中,一切都正常工作(登录、注册等),我在用户模型中有如下方法 public function cars() { return $this->belongsToMany(Car::class, 'users_cars', 'user_id', 'car_id'); } 我也有API认证路由,这是工作良好 Route::group([ 'prefix' => '

我有用户汽车,在用户和汽车之间有多对多的关系。我正在使用passport,在我的系统中,一切都正常工作(登录、注册等),我在用户模型中有如下方法

public function cars()
    { 
        return $this->belongsToMany(Car::class, 'users_cars', 'user_id', 'car_id');
    }
我也有API认证路由,这是工作良好

Route::group([
    'prefix' => 'auth'
], function () {
    Route::post('login', 'AuthController@login');
    Route::post('signup', 'AuthController@signup');

    Route::group([
      'middleware' => 'auth:api'
    ], function() {
        Route::get('logout', 'AuthController@logout');
        Route::get('user', 'AuthController@user');
        Route::get('car-list','CarController@carList');
    });
});
在CarController中,我试图根据auth login
user\u id
获取用户汽车,如下所示

public function carList(){
    $User = new User();
    return new CarResource($User->cars());
}
我还将API资源用于API的

use App\Http\Resources\Car as CarResource;

但是它不起作用,所以请有人指导我如何解决这个问题。非常感谢。

CarController
中,您正在实例化一个新的
用户
对象。他们永远不会有汽车。如果要获取登录用户所拥有的所有车辆,您需要执行以下操作:

public function carList(){
    $User = User::with('cars')->findOrFail(Auth::id());
    return new CarResource($User->cars);
}

什么是CarResource?@KyleWardle这是API的API资源,我认为您应该使用
返回新的CarResource($User->cars)
返回新的CarResource($User->cars()->get())
@cbaconier我两次都试过,但都不为meAs工作@KyleWardle说,根据你的代码,你的
$User
不能拥有汽车。你需要让一个已经有至少一个的用户来证明它是有效的。当你说不工作时,它是否给出了一个错误?不返回数据?它现在正在工作,但返回一个空白数组
datat:[]
Perfect当我添加静态
user\u id
时,它正在工作,就像这样
findOrFail(3)我找到了一种有效的方法
findOrFail(request()->user()->id)这是最佳实践吗?