tylerfiekens / graphqlite-laravel
A Laravel service provider package to help you get started with GraphQLite in Laravel.
Installs: 3 586
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 20
Open Issues: 0
Requires
- php: ^8.2
- ecodev/graphql-upload: ^7.0
- illuminate/cache: ^11
- illuminate/console: ^11
- illuminate/container: ^11
- illuminate/support: ^11
- laminas/laminas-diactoros: ^3.5
- psr/container: ^2.0.2
- symfony/cache: ^6
- symfony/psr-http-message-bridge: ^6
- thecodingmachine/graphqlite: ^v7.0.0
Requires (Dev)
- ext-sqlite3: *
- laravel/pint: ^1.18
- orchestra/testbench: v9.5.2
- phpunit/phpunit: ^10.0.19
- v7.0.1
- v7.0.0
- v6.2.3
- dev-master / 6.1.x-dev
- v5.0.4
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v4.1.0
- 4.0.x-dev
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.0.0
- dev-develop
- dev-dependabot/add-v2-config-file
- dev-dependabot/composer/phpunit/phpunit-tw-7.5.4or-tw-8.3or-tw-9.0
- dev-dependabot/composer/orchestra/testbench-tw-3.7.7or-tw-4or-tw-5or-tw-6
This package is auto-updated.
Last update: 2025-02-19 20:58:38 UTC
README
Laravel GraphQLite bindings
GraphQLite integration package for Laravel.
This package is based on the work of the friendly folks over at TheCodingMachine.
Installation
composer require tylerfiekens/graphqlite-laravel
Publish the configuration file
php artisan vendor:publish --provider="TheCodingMachine\GraphQLite\Laravel\Providers\GraphQLiteServiceProvider"
Usage
The package will automatically register the routes for the GraphQL endpoint. You can access the GraphQL endpoint at /graphql
.
By default, the package will look for your GraphQL types in the App\GraphQL\Types
namespace, and your queries and mutations in the App\GraphQL\Queries
and App\GraphQL\Mutations
namespaces respectively.
You can change these settings in the config/graphqlite.php
configuration file.
Types
To create a new type, you can just create a new class in the App\GraphQL\Types
namespace.
The only requirement is that the class must have a #[Type]
annotation, which is used to register the type in the schema.
To add fields to the type, you can create public methods with a #[Field]
annotation. The method name will be used as the field name.
<?php namespace App\GraphQL\Types; use TheCodingMachine\GraphQLite\Annotations\Type; use TheCodingMachine\GraphQLite\Annotations\Field; #[Type(name: 'Example')] class ExampleType { public function __construct( private readonly string $name private readonly array $data ) { } #[Field] public function name(): string { return $this->name; } #[Field] public function data(): array { return $this->data; } }
That's it! The type will be automatically registered in the schema.
Queries
Now let's create a query to fetch an example object.
By default, the package will look for queries in the App\GraphQL\Queries
namespace.
Queries are created in the same way as types, but with a #[Query]
annotation instead of a #[Type]
annotation.
<?php namespace App\GraphQL\Queries; use App\GraphQL\Types\ExampleType; use TheCodingMachine\GraphQLite\Annotations\Query; class ExampleQuery { #[Query('example')] public function __invoke(): ExampleType { return new ExampleType('Example', ['data' => 'example']); } }
The query will be automatically registered in the schema. You can now query it in your GraphQL client.
query { example { name data } }
Mutations
Now let's create a mutation to create a new example object.
By default, the package will look for mutations in the App\GraphQL\Mutations
namespace.
Mutations are created in the same way as queries, but with a #[Mutation]
annotation instead of a #[Query]
annotation.
<?php namespace App\GraphQL\Mutations; use App\GraphQL\Types\ExampleType; use TheCodingMachine\GraphQLite\Annotations\Mutation; class CreateExampleMutation { #[Mutation(name: 'createExample')] public function __invoke(string $name, array $data): ExampleType { return new ExampleType($name, $data); } }
The mutation will be automatically registered in the schema. You can now call it in your GraphQL client.
mutation { createExample(name: "Example", data: {data: "example"}) { name data } }