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
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
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 yourconfig/lighthouse.php