supliu / laravel-graphql
GraphQL with Laravel Framework
Installs: 230
Dependents: 0
Suggesters: 0
Security: 0
Stars: 34
Watchers: 3
Forks: 2
Open Issues: 0
Language:Blade
Requires
- laravel/framework: 7.*
- webonyx/graphql-php: 14.*
Requires (Dev)
- orchestra/testbench: 5.*
Suggests
- supliu/laravel-query-monitor: Simple artisan command to monitoring triggered queries SQL
This package is auto-updated.
Last update: 2024-11-20 16:20:00 UTC
README
Laravel GraphQL
The objective of this project is to facilitate the integration of the webonyx/graphql-php with the Laravel Framework
How to install
Use composer to install this package
composer require supliu/laravel-graphql
Execute a publish with artisan command:
php artisan vendor:publish --provider="Supliu\LaravelGraphQL\ServiceProvider"
How to use
You must create your Query and Mutation classes and register on config/graphql.php
so that GraphQL can read.
'queries' => [ 'detailHero' => \App\GraphQL\Queries\DetailHero::class ], 'mutations' => [ 'updateHero' => \App\GraphQL\Mutations\UpdateHero::class ]
Query
Below is an example of a Query class that returns the data of a Star Wars hero:
<?php namespace App\GraphQL\Queries; use GraphQL\Type\Definition\ObjectType; use GraphQL\Type\Definition\Type; use Supliu\LaravelGraphQL\Query; class DetailHero extends Query { /** * @return array */ protected function args(): array { return [ 'id' => Type::nonNull(Type::int()) ]; } /** * @return Type */ protected function typeResult(): Type { return new ObjectType([ 'name' => 'HeroQueryResult', 'fields' => [ 'name' => Type::string() ] ]); } /** * @return mixed */ protected function resolve($root, $args, $context, $info) { return Hero::find($args['id']); } }
Mutation
Below is an example of a Mutation class that returns if update worked:
<?php namespace App\GraphQL\Mutations; use GraphQL\Type\Definition\ObjectType; use GraphQL\Type\Definition\Type; use Supliu\LaravelGraphQL\Mutation; class UpdateHero extends Mutation { protected function typeResult(): Type { return new ObjectType([ 'name' => 'UpdateHeroResult', 'fields' => [ 'error' => Type::boolean(), 'message' => Type::string() ] ]); } /** * @return array */ protected function args(): array { return [ 'id' => Type::nonNull(Type::int()) 'name' => Type::nonNull(Type::string()) ]; } /** * @return mixed */ protected function resolve($root, $args, $context, $info) { Hero::find($args['id'])->update([ 'name' => $args['name'] ]); return [ 'error' => false, 'message' => 'Updated!' ]; } }
License
The Laravel GraphQL is open-sourced project licensed under the MIT license.