首页 > 解决方案 > 在 laravel 中调用 null 上的成员函数 users()

问题描述

我正在尝试添加数据,但出现错误 Call to a member function users() on null 它工作正常我不知道我的代码有什么问题我什至没有更改我的代码。

当用户未登录但我的用户也已登录时,我知道它的错误,我正在使用邮递员测试 api。

这是我的控制器代码:

                   DB::beginTransaction();

    try{

        $request->request->add(['created_by' => Auth::user()->id]);
        $group = Group::where('name', $request->get('name'))->first();
        $group->users()->attach($request->get('group_members', [])); // error on this line users()

        DB::commit();

        return response([
            'status' => true,
            'message' => 'Group added',
        ], 200);

    } catch(\Exception $ex) {
        DB::rollback();
        return response([
            'status' => false,
            'message' => __('messages.validation_errors'),
            'errors' => $ex->getMessage(),
        ], 500);
    }

我的路线:

  Route::middleware('jwt.auth')->group(function() {

Route::post('add_group', "GroupController@addGroup");

 });

我的组模型:

                  public function users()
{
    return $this->belongsToMany('App\Models\Users\User', 'group_members');
}

我的用户模型:

             public function groups()
{
    return $this->belongsToMany('App\Group', 'group_members');
}

我的邮递员身体要求:

       {
"name": "Steve",
"group_members": [4,6]
       }

正如我所说,代码没有任何变化,它在一天前工作正常。

您的帮助将不胜感激。谢谢

标签: phplaravel

解决方案


您正在使用 JWT-Auth,因此您需要在 app/config.php 中将您的 Api 驱动程序设置为“jwt”,然后您可以使用访问当前用户

$user = JWTAuth::parseToken()->authenticate()

不要忘记在您的请求中将令牌作为授权标头传递。


推荐阅读