supliu / laravel-graphql
基于Laravel框架的GraphQL
1.0.1
2020-08-04 16:08 UTC
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-09-20 15:56:25 UTC
README
Laravel GraphQL
本项目的目标是便于将webonyx/graphql-php与Laravel框架集成
如何安装
使用Composer安装此包
composer require supliu/laravel-graphql
执行Artisan命令进行发布
php artisan vendor:publish --provider="Supliu\LaravelGraphQL\ServiceProvider"
如何使用
您必须创建您的查询和突变类,并在config/graphql.php
中注册,以便GraphQL可以读取。
'queries' => [ 'detailHero' => \App\GraphQL\Queries\DetailHero::class ], 'mutations' => [ 'updateHero' => \App\GraphQL\Mutations\UpdateHero::class ]
查询
以下是一个查询类的示例,它返回《星球大战》英雄的数据
<?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']); } }
突变
以下是一个突变类的示例,它返回更新是否成功
<?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!' ]; } }
许可证
Laravel GraphQL是一个开源项目,采用MIT许可证。