繁体   English   中英

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

[英]How to access model method based on api auth in 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 资源用于 API

use App\Http\Resources\Car as CarResource;

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM