Php 如何在laravel 5.6中访问基于api auth的模型方法?
我有用户汽车,在用户和汽车之间有多对多的关系。我正在使用passport,在我的系统中,一切都正常工作(登录、注册等),我在用户模型中有如下方法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' => '
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 loginuser\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)代码>这是最佳实践吗?