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

时间:2018-10-31 13:43:58

标签: php laravel laravel-5.6

我有用户用车,在用户和汽车之间有许多关系。我正在使用护照,并且一切正常(登录,注册等),在我的用户模型中,我的方法如下所示:

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中,我试图根据如下所示的身份验证登录user_id获取用户汽车

public function carList(){
    $User = new User();
    return new CarResource($User->cars());
}

我也在使用API​​资源

use App\Http\Resources\Car as CarResource;

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

1 个答案:

答案 0 :(得分:1)

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

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