是否有一种方法可以使用@paginate指令从lighthouse-php不从模型查询数据?比方说,我使用第三方库来使用api或其他方式查询数据。
幸运的是,最近才添加了这样一个功能:https://github.com/nuwave/lighthouse/pull/2232。此PR增加了对从@paginator
指令中的resolver
选项返回Paginator
中的数据的支持。
您可以提供自己的函数,通过直接返回IlluminateContractsPaginationPaginator
实例中的数据来解析字段。
与builder
和model
互斥。不兼容scopes
和@eq
等构建器参数。
type Query {
posts: [Post!]! @paginate(resolver: "App\GraphQL\Queries\Posts")
}
自定义解析器函数可能如下所示:
namespace AppGraphQLQueries;
use IlluminatePaginationLengthAwarePaginator;
final class Posts
{
/**
* @param null $root Always null, since this field has no parent.
* @param array{} $args The field arguments passed by the client.
* @param NuwaveLighthouseSupportContractsGraphQLContext $context Shared between all fields.
* @param GraphQLTypeDefinitionResolveInfo $resolveInfo Metadata for advanced query resolution.
*/
public function __invoke($root, array $args, GraphQLContext $context, ResolveInfo $resolveInfo): LengthAwarePaginator
{
//...apply your logic
return new LengthAwarePaginator([
[
'id' => 1,
'title' => 'Flying teacup found in solar orbit',
],
[
'id' => 2,
'title' => 'What actually is the difference between cookies and biscuits?',
],
], 2, 15);
}
}
(文档目前没有得到正确的更新,这就是为什么你可能没有发现这个。我正在恢复部署