Lighthouse: Call to a member function beginTransaction() on null

Created on 21 Aug 2019  Â·  3Comments  Â·  Source: nuwave/lighthouse

I'm using lighthouse-php with Laravel, JenssegersMongodb and one of my models using Mongodb to store data.
And here is the error:

{
  "errors": [
    {
      "debugMessage": "Call to a member function beginTransaction() on null",
      "message": "Internal server error",
      "extensions": {
        "category": "internal"
      },
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "createCart"
      ],
      "trace": [
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Concerns\\ManagesTransactions.php",
          "line": 93,
          "call": "Illuminate\\Database\\Connection::createTransaction()"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Concerns\\ManagesTransactions.php",
          "line": 23,
          "call": "Illuminate\\Database\\Connection::beginTransaction()"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\nuwave\\lighthouse\\src\\Schema\\Directives\\CreateDirective.php",
          "line": 59,
          "call": "Illuminate\\Database\\Connection::transaction(instance of Closure)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\nuwave\\lighthouse\\src\\Schema\\Factories\\FieldFactory.php",
          "line": 226,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\CreateDirective::Nuwave\\Lighthouse\\Schema\\Directives\\{closure}(null, array(3), instance of Nuwave\\Lighthouse\\Schema\\Context, instance of GraphQL\\Type\\Definition\\ResolveInfo)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\Executor\\ReferenceExecutor.php",
          "line": 632,
          "call": "Nuwave\\Lighthouse\\Schema\\Factories\\FieldFactory::Nuwave\\Lighthouse\\Schema\\Factories\\{closure}(null, array(3), instance of Nuwave\\Lighthouse\\Schema\\Context, instance of GraphQL\\Type\\Definition\\ResolveInfo)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\Executor\\ReferenceExecutor.php",
          "line": 555,
          "call": "GraphQL\\Executor\\ReferenceExecutor::resolveOrError(instance of GraphQL\\Type\\Definition\\FieldDefinition, instance of GraphQL\\Language\\AST\\FieldNode, instance of Closure, null, instance of Nuwave\\Lighthouse\\Schema\\Context, instance of GraphQL\\Type\\Definition\\ResolveInfo)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\Executor\\ReferenceExecutor.php",
          "line": 478,
          "call": "GraphQL\\Executor\\ReferenceExecutor::resolveField(GraphQLType: Mutation, null, instance of ArrayObject(1), array(1))"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\Executor\\ReferenceExecutor.php",
          "line": 921,
          "call": "GraphQL\\Executor\\ReferenceExecutor::GraphQL\\Executor\\{closure}(array(0), 'createCart')"
        },
        {
          "call": "GraphQL\\Executor\\ReferenceExecutor::GraphQL\\Executor\\{closure}(array(0), 'createCart')"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\Executor\\ReferenceExecutor.php",
          "line": 923,
          "function": "array_reduce(array(1), instance of Closure, array(0))"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\Executor\\ReferenceExecutor.php",
          "line": 494,
          "call": "GraphQL\\Executor\\ReferenceExecutor::promiseReduce(array(1), instance of Closure, array(0))"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\Executor\\ReferenceExecutor.php",
          "line": 256,
          "call": "GraphQL\\Executor\\ReferenceExecutor::executeFieldsSerially(GraphQLType: Mutation, null, array(0), instance of ArrayObject(1))"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\Executor\\ReferenceExecutor.php",
          "line": 208,
          "call": "GraphQL\\Executor\\ReferenceExecutor::executeOperation(instance of GraphQL\\Language\\AST\\OperationDefinitionNode, null)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\Executor\\Executor.php",
          "line": 155,
          "call": "GraphQL\\Executor\\ReferenceExecutor::doExecute()"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\GraphQL.php",
          "line": 158,
          "call": "GraphQL\\Executor\\Executor::promiseToExecute(instance of GraphQL\\Executor\\Promise\\Adapter\\SyncPromiseAdapter, instance of GraphQL\\Type\\Schema, instance of GraphQL\\Language\\AST\\DocumentNode, null, instance of Nuwave\\Lighthouse\\Schema\\Context, array(1), null, null)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\webonyx\\graphql-php\\src\\GraphQL.php",
          "line": 90,
          "call": "GraphQL\\GraphQL::promiseToExecute(instance of GraphQL\\Executor\\Promise\\Adapter\\SyncPromiseAdapter, instance of GraphQL\\Type\\Schema, 'mutation {\n  createCart(user_id: 402, shop_id: \"chaotufs\", shop_name: \"潮图旗舰店\") {\n    id\n    shop_id\n    shop_name\n  }\n}', null, instance of Nuwave\\Lighthouse\\Schema\\Context, array(1), null, null, array(29))"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\nuwave\\lighthouse\\src\\GraphQL.php",
          "line": 177,
          "call": "GraphQL\\GraphQL::executeQuery(instance of GraphQL\\Type\\Schema, 'mutation {\n  createCart(user_id: 402, shop_id: \"chaotufs\", shop_name: \"潮图旗舰店\") {\n    id\n    shop_id\n    shop_name\n  }\n}', null, instance of Nuwave\\Lighthouse\\Schema\\Context, array(1), null, null, array(29))"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\nuwave\\lighthouse\\src\\GraphQL.php",
          "line": 116,
          "call": "Nuwave\\Lighthouse\\GraphQL::executeQuery('mutation {\n  createCart(user_id: 402, shop_id: \"chaotufs\", shop_name: \"潮图旗舰店\") {\n    id\n    shop_id\n    shop_name\n  }\n}', instance of Nuwave\\Lighthouse\\Schema\\Context, array(1), null, null)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\nuwave\\lighthouse\\src\\Support\\Http\\Controllers\\GraphQLController.php",
          "line": 70,
          "call": "Nuwave\\Lighthouse\\GraphQL::executeRequest(instance of Nuwave\\Lighthouse\\Execution\\LighthouseRequest)"
        },
        {
          "call": "Nuwave\\Lighthouse\\Support\\Http\\Controllers\\GraphQLController::query(instance of Nuwave\\Lighthouse\\Execution\\LighthouseRequest)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Controller.php",
          "line": 54,
          "function": "call_user_func_array(array(2), array(1))"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\ControllerDispatcher.php",
          "line": 45,
          "call": "Illuminate\\Routing\\Controller::callAction('query', array(1))"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php",
          "line": 219,
          "call": "Illuminate\\Routing\\ControllerDispatcher::dispatch(instance of Illuminate\\Routing\\Route, instance of Nuwave\\Lighthouse\\Support\\Http\\Controllers\\GraphQLController, 'query')"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php",
          "line": 176,
          "call": "Illuminate\\Routing\\Route::runController()"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
          "line": 680,
          "call": "Illuminate\\Routing\\Route::run()"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php",
          "line": 30,
          "call": "Illuminate\\Routing\\Router::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\nuwave\\lighthouse\\src\\Support\\Http\\Middleware\\AcceptJson.php",
          "line": 30,
          "call": "Illuminate\\Routing\\Pipeline::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
          "line": 163,
          "call": "Nuwave\\Lighthouse\\Support\\Http\\Middleware\\AcceptJson::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php",
          "line": 53,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
          "line": 104,
          "call": "Illuminate\\Routing\\Pipeline::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
          "line": 682,
          "call": "Illuminate\\Pipeline\\Pipeline::then(instance of Closure)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
          "line": 657,
          "call": "Illuminate\\Routing\\Router::runRouteWithinStack(instance of Illuminate\\Routing\\Route, instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
          "line": 623,
          "call": "Illuminate\\Routing\\Router::runRoute(instance of Illuminate\\Http\\Request, instance of Illuminate\\Routing\\Route)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
          "line": 612,
          "call": "Illuminate\\Routing\\Router::dispatchToRoute(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php",
          "line": 176,
          "call": "Illuminate\\Routing\\Router::dispatch(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php",
          "line": 30,
          "call": "Illuminate\\Foundation\\Http\\Kernel::Illuminate\\Foundation\\Http\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php",
          "line": 21,
          "call": "Illuminate\\Routing\\Pipeline::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
          "line": 163,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php",
          "line": 53,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php",
          "line": 21,
          "call": "Illuminate\\Routing\\Pipeline::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
          "line": 163,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php",
          "line": 53,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize.php",
          "line": 27,
          "call": "Illuminate\\Routing\\Pipeline::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
          "line": 163,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php",
          "line": 53,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode.php",
          "line": 62,
          "call": "Illuminate\\Routing\\Pipeline::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
          "line": 163,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php",
          "line": 53,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\fideloper\\proxy\\src\\TrustProxies.php",
          "line": 57,
          "call": "Illuminate\\Routing\\Pipeline::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
          "line": 163,
          "call": "Fideloper\\Proxy\\TrustProxies::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php",
          "line": 53,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\app\\Http\\Middleware\\CorsMiddleware.php",
          "line": 28,
          "call": "Illuminate\\Routing\\Pipeline::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
          "line": 163,
          "call": "App\\Http\\Middleware\\CorsMiddleware::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php",
          "line": 53,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
          "line": 104,
          "call": "Illuminate\\Routing\\Pipeline::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php",
          "line": 151,
          "call": "Illuminate\\Pipeline\\Pipeline::then(instance of Closure)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php",
          "line": 116,
          "call": "Illuminate\\Foundation\\Http\\Kernel::sendRequestThroughRouter(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "C:\\xampp\\htdocs\\api.thuongdo.com\\public\\index.php",
          "line": 55,
          "call": "Illuminate\\Foundation\\Http\\Kernel::handle(instance of Illuminate\\Http\\Request)"
        }
      ]
    }
  ],
  "data": {
    "createCart": null
  }
}
````

<!-- In what way is Lighthouse behaving incorrectly or unexpectedly? -->

<!-- What do you think should happen instead? How could the issue be resolved?-->

**Here is my code:**

**Cart model:**

namespace AppModels;

use JenssegersMongodbEloquentModel as Eloquent;

class Cart extends Eloquent
{

protected $collection = "cart";

protected $connection = 'mongodb';

protected $fillable = [
    "user_id",
    "shop_id",
    "shop_name"
];

public function items()
{
    return $this->embedsMany('Item');
}

}

**config/database.php:**

'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGO_DB_HOST', 'localhost'),
'port' => env('MONGO_DB_PORT', 27017),
'database' => env('MONGO_DB_DATABASE'),
'username' => env('MONGO_DB_USERNAME'),
'password' => env('MONGO_DB_PASSWORD'),
'options' => []
],

**schema.graph**

type Cart {
id: ID!
user_id: Int
shop_id: String
shop_name: String
items: [Item] @hasMany
created_at: DateTime!
updated_at: DateTime!
}


createCart(
user_id: Int
shop_id: String
shop_name: String
): Cart @create
updateCart(
id: ID!
user_id: Int
shop_id: String
shop_name: String
): Cart @update
deleteCart(
id: ID!
): Cart @delete

Error occurred when calling graphql:

**graphql-playground:**

mutation {
createCart(
user_id: 402
shop_id: "chaotufs"
shop_name: "潮图旗舰店"
) {
id
shop_id
shop_name
}
}
```

Environment

Lighthouse Version: 4.1
Laravel Version: 5.8

Most helpful comment

It seems to be an issue of that package (see https://github.com/jenssegers/laravel-mongodb/issues/1334).

You can disable transactions in Lighthouse, setting 'transactional_mutations' => false, in your config/lighthouse.php

All 3 comments

It seems to be an issue of that package (see https://github.com/jenssegers/laravel-mongodb/issues/1334).

You can disable transactions in Lighthouse, setting 'transactional_mutations' => false, in your config/lighthouse.php

Sorry, our package is made to support eloquent, and it seems like the driver you are using does not have full support for eloquent.

As @enzonotario said, you can disable transactions in config, however you might run into other issues when using other directives as it ties a lot into eloquent.

You can always create custom directives or using a function to resolve it.

@enzonotario : It worked for me. Thank you. I will follow the jenssegers/laravel-mongodb#1334 bug

Was this page helpful?
0 / 5 - 0 ratings

Related issues

vine1993 picture vine1993  Â·  3Comments

souljacker picture souljacker  Â·  3Comments

spawnia picture spawnia  Â·  3Comments

alexwhb picture alexwhb  Â·  4Comments

sadhakbj picture sadhakbj  Â·  4Comments