optigov / eloquent-graphql
本包提供从Eloquent模型自动创建GraphQL类型和字段的工具。
v3.0.1
2024-09-24 16:03 UTC
Requires
- php: ^8.0
- laravel/framework: ^10.0
- webonyx/graphql-php: ^v15.6.3
Requires (Dev)
- laravel/pint: ^1.13
- phpunit/phpunit: ^9.5
- dev-master
- v3.0.1
- v3.0.0
- v2.4.10
- v2.4.9
- v2.4.8
- v2.4.7
- v2.4.6
- v2.4.5
- v2.4.4
- v2.4.3
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.5
- v2.3.4
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.10
- v2.1.9
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.0
- v0.2.7
- v0.2.6
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
This package is auto-updated.
Last update: 2024-09-24 16:04:24 UTC
README
此包自动从Eloquent模型创建GraphQL类型和字段,并包含它们的解析器,用于webonyx/graphql-php
库。该包使用PHP DocBlock注解来确定GraphQL类型和字段。它支持使用查询构建器在返回多个模型的属性上进行分页、过滤和排序,以实现最佳性能。
安装
composer require optigov/eloquent-graphql
使用方法
注解你的模型
为了使字段在GraphQL中可用,请使用@property
注解注解你的模型。
/** * @property int $id * @property string $name * @property Author $author * @property-read $created_at * @property-read $updated_at */ class Book { // ... }
/** * @property int $id * @property string $first_name * @property string $last_name * @property Books[] $books * @property-read $created_at * @property-read $updated_at */ class Author { // ... }
构建你的模式
使用EloquentGraphQLService
类构建你的模式。
use App\Models\Book; use App\Models\Author; use GraphQL\Type\Schema; use EloquentGraphQL\Services\EloquentGraphQLService; $graphQLService = new EloquentGraphQLService(); $schema = new Schema([ 'query' => $graphQLService->query() ->view(Book::class) ->view(Author::class) ->all(Book::class) ->all(Author::class) ->build(), 'mutation' => $graphQLService->mutation() ->create(Book::class) ->create(Author::class) ->update(Book::class) ->update(Author::class) ->delete(Book::class) ->delete(Author::class) ->build(), ]);
更进一步
分页
使用@paginate
注解,通过查询构建器分页返回多个模型的属性,例如多对多关系。
/** * ... * @property Books[] $books @paginate * ... */ class Author { // ... }
过滤和排序
使用@filterable
和@orderable
注解,通过查询构建器启用返回多个模型的属性上的过滤和排序,例如多对多关系。
/** * ... * @property Books[] $books @paginate @filterable @orderable * ... */ class Author { // ... }
自定义字段
您可以使用field()
方法向GraphQL类型添加自定义字段。
$schema = new Schema([ 'query' => $graphQLService->query() ->view(Book::class) ->field('customField', [ 'type' => Type::string(), 'resolve' => function ($root, $args) { return 'Hello World!'; } ]) ->build(), ]);