php - Laravel: getAttributes on Null

one text

I'm currently working on a project where I use the following libaries:

All the relations are good, because when I do a get request on the collection it work perfectly with all his relations. But when I want to add something I got the following error:

Call to a member function getAttributes() on null

vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php :95

my body:

{
  "data": {
    "type": "foo",
    "attributes": {
      "name": "Test something",
    }
  }
}
  • Laravel version: 9.x
  • Php Version: 8.1

Stacktrace:

{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Call to a member function getAttributes() on null",
            "meta": {
                "exception": "Error",
                "file": "/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php",
                "line": 95,
                "trace": [
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php",
                        "line": 711,
                        "function": "loadAggregate",
                        "class": "Illuminate\\Database\\Eloquent\\Collection",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php",
                        "line": 726,
                        "function": "loadAggregate",
                        "class": "Illuminate\\Database\\Eloquent\\Model",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel-json-api/eloquent/src/QueryBuilder/ModelLoader.php",
                        "line": 131,
                        "function": "loadCount",
                        "class": "Illuminate\\Database\\Eloquent\\Model",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel-json-api/eloquent/src/Hydrators/ModelHydrator.php",
                        "line": 101,
                        "function": "loadCount",
                        "class": "LaravelJsonApi\\Eloquent\\QueryBuilder\\ModelLoader",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel-json-api/laravel/src/Http/Controllers/Actions/Store.php",
                        "line": 64,
                        "function": "store",
                        "class": "LaravelJsonApi\\Eloquent\\Hydrators\\ModelHydrator",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
                        "line": 54,
                        "function": "store",
                        "class": "LaravelJsonApi\\Laravel\\Http\\Controllers\\JsonApiController",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
                        "line": 43,
                        "function": "callAction",
                        "class": "Illuminate\\Routing\\Controller",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
                        "line": 260,
                        "function": "dispatch",
                        "class": "Illuminate\\Routing\\ControllerDispatcher",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
                        "line": 205,
                        "function": "runController",
                        "class": "Illuminate\\Routing\\Route",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                        "line": 725,
                        "function": "run",
                        "class": "Illuminate\\Routing\\Route",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 141,
                        "function": "Illuminate\\Routing\\{closure}",
                        "class": "Illuminate\\Routing\\Router",
                        "type": "->"
                    },
                    {
                        "file": "/app/Http/Middleware/Control.php",
                        "line": 26,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "App\\Http\\Middleware\\Control",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel-json-api/laravel/src/Http/Middleware/BootJsonApi.php",
                        "line": 105,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "LaravelJsonApi\\Laravel\\Http\\Middleware\\BootJsonApi",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
                        "line": 50,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
                        "line": 126,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
                        "line": 102,
                        "function": "handleRequest",
                        "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
                        "line": 54,
                        "function": "handleRequestUsingNamedLimiter",
                        "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php",
                        "line": 44,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "Illuminate\\Auth\\Middleware\\Authenticate",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 116,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                        "line": 726,
                        "function": "then",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                        "line": 703,
                        "function": "runRouteWithinStack",
                        "class": "Illuminate\\Routing\\Router",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                        "line": 667,
                        "function": "runRoute",
                        "class": "Illuminate\\Routing\\Router",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                        "line": 656,
                        "function": "dispatchToRoute",
                        "class": "Illuminate\\Routing\\Router",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
                        "line": 190,
                        "function": "dispatch",
                        "class": "Illuminate\\Routing\\Router",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 141,
                        "function": "Illuminate\\Foundation\\Http\\{closure}",
                        "class": "Illuminate\\Foundation\\Http\\Kernel",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
                        "line": 21,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
                        "line": 31,
                        "function": "handle",
                        "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
                        "line": 21,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
                        "line": 40,
                        "function": "handle",
                        "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
                        "line": 27,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
                        "line": 86,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
                        "line": 62,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "Illuminate\\Http\\Middleware\\HandleCors",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
                        "line": 39,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 180,
                        "function": "handle",
                        "class": "Illuminate\\Http\\Middleware\\TrustProxies",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                        "line": 116,
                        "function": "Illuminate\\Pipeline\\{closure}",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
                        "line": 165,
                        "function": "then",
                        "class": "Illuminate\\Pipeline\\Pipeline",
                        "type": "->"
                    },
                    {
                        "file": "/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
                        "line": 134,
                        "function": "sendRequestThroughRouter",
                        "class": "Illuminate\\Foundation\\Http\\Kernel",
                        "type": "->"
                    },
                    {
                        "file": "/public/index.php",
                        "line": 52,
                        "function": "handle",
                        "class": "Illuminate\\Foundation\\Http\\Kernel",
                        "type": "->"
                    }
                ]
            },
            "status": "500",
            "title": "Internal Server Error"
        }
    ]
}

Source