vaahidirn / laravel-graphql
使用 Laravel filterQuery 模型定义用于连接过滤的 GraphQL 架构
dev-master
2019-01-16 11:31 UTC
Requires
This package is not auto-updated.
Last update: 2024-09-22 03:03:46 UTC
README
使用 Laravel filterQuery 模型定义用于连接过滤的 GraphQL 架构。
安装
composer require vahidirn/laravel-graphql
用法
在模型上使用 FilterQuery 特性
namespace App;
use VahidIrn\FilterQuery\FilterQuery;
class User extends Model
{
use \VahidIrn\FilterQuery\FilterQueryTrait;
protected $filterQuery = [
'name' => FilterQuery::String
];
}
创建 GraphQL 用户类型
namespace App\GraphQL\Type;
use App\User;
use GraphQL\Type\Definition\Type;
use Folklore\GraphQL\Support\Type as GraphQLType;
class User extends GraphQLType
{
protected $attributes = [
'name' => 'User'
];
public function fields() {
return [
'id' => [
'type' => Type::id(),
],
'name' => [
'type' => Type::string()
]
]
}
}
创建 GraphQL UserFilter 类型。UserFilter 字段定义将自动填充 User::$filterQuery
中的字段。
namespace App\GraphQL\Type;
use App\User;
use VahidIrn\GraphQLFilter\Type\FilterType;
class UserFilter extends FilterType
{
protected $model = User::class;
}
创建 GraphQL 查询类型,以列出使用 User 模型的 filterQuery 设置的用户记录。
namespace App\GraphQL\Type;
use App\User;
use GraphQL;
use GraphQL\Type\Definition\Type;
use Folklore\GraphQL\Support\Query;
class UsersQuery extends Query
{
protected $attributes = [
'name' => 'users'
];
public function type() {
return Type::listOf(GraphQL::type('User'));
}
public function args() {
return [
'filter' => [
'type' => GraphQL::type('UserFilter')
]
];
}
public function resolve($root, $args, $context) {
return User::filter($args['filter'])->orderBy('name')->limit(10)->get();
}
}
现在,GraphQL 查询可以使用 FilterQuery::String
规则执行搜索。
query Users {
users (filter: { name_MATCH: 'vahid' }) {
name
}
}