uniben / laravelgraphqlable
快速且简单地为您的Laravel模型和控制器构建原型GraphQL查询和突变。
Requires
- illuminate/support: >=5
- mll-lab/laravel-graphql-playground: >=0.3.3
- webonyx/graphql-php: >=0.13.8
Requires (Dev)
- laravel/framework: 5.5.x
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~7.0
- sempro/phpunit-pretty-print: ^1.0
This package is auto-updated.
Last update: 2024-09-19 02:31:03 UTC
README
快速入门指南
只需将GraphQLable特性添加到您的模型或GraphQL宏添加到您的路由中,即可将它们添加到您的模式中。字段会自动映射到GraphQL类型,也可以配置为使用自定义的GraphQL字段映射,适用于模型和路由。
安装
通过Composer
$ composer require uniben/laravelgraphqlable
使用方法
模型、GraphQL类型和控制器
类型
LaravelGraphQLable会自动生成GraphQL类型,通过搜索使用GraphQLQueryableTrait
的模型来实现。
只需将GraphQLQueryableTrait
特性添加到您的模型,并在/graphql
端点查询GraphQL端点。LaravelGraphQLable还附带graphql-playground,您可以在/graphql-playrgound
访问它。
您可以使用graphQLQueryable
、graphQLMutatable
和graphQLRelations
方法自定义GraphQL模型类型公开的属性、方法和关系。
公开GraphQL类型的字段
public static function graphQLQueryable() { return [ 'id', 'created_at', 'updated_at' ]; }
注意:您添加到graphQLRelations数组中的关系必须使用GraphQLQueryableTrait
您还可以使用graphQLMutatable
声明模型的突变。只需覆盖公开的静态方法并返回一个字符串数组,这些字符串引用应包含在类型突变中的方法。
公开类型突变
public static function graphQLMutatable(): array { return [ 'sayHello' ] } public function sayHello() { return $this->name . ' says hello!'; }
公开GraphQL类型的关联
public static function graphQLRelations(): array { return [ 'page' ]; } public function page() { $this->hasOne(Page::class); }
更改默认GraphQL类型名称
GraphQL类型使用的默认名称是模型名称的复数形式。
例如
class User { use GraphQLQueryableTrait; }
生成一个名为Users的GraphQL类型。
一个示例GraphQL用户模型查询可能看起来像这样
query { Users { id, name, created_at }}
控制器
您可以在web.php文件或api.php文件中声明特殊的路由,这些路由返回使用GraphQLQueryableTrait
的模型。
通过控制器添加查询到GraphQL模式
路由
Route::any('sayHello', 'UsersController@sayHello')->graphQL(App\User::class, 'query');
那发生了什么?
首先,我们使用常规的Laravel方法定义一个路由。
Route::get('sayHello', 'UsersController@sayHello')
然后我们使用GraphQL查询宏,告诉LaravelGraphQLable将此控制器方法(或闭包)添加到我们的GraphQLSchema中
...->graphQL(App\User::class, 'query');
对于第一个参数,我们提供要返回的GraphQL类型的类路径。在上述示例中,我们引用了一个使用GraphQLQueryableTrait
的Laravel模型
我们不需要检索模型的类型。只要它使用特性,就会自动完成。
对于第二个参数,我们指定类型应该是查询还是突变。
覆盖控制器类型名称
使用graphQL宏的路由会生成一个默认名称为{controller}{Method}{Type}的GraphQL类型(如果您的控制器名称以单词Controller结尾,则将其删除)
如果您想覆盖为您的类型生成的默认名称,只需将名称宏添加到您的路由中。
->graphQL(...)->name('SayHello');
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
测试
$ composer test
贡献
请参阅contributing.md以获取详细信息和一个待办事项列表。
安全
如果您发现任何与安全相关的问题,请通过电子邮件发送至 ben@blwatson.com,而不是使用问题跟踪器。
致谢
许可协议
许可协议。请参阅许可协议文件以获取更多信息。