Return 来自 rebing 的分页数据 laravel graphql 服务器

Return paginated data from rebing laravel graphql server

我正在使用 rebing graphql laravel 库,它可以很好地返回 json 数据。目前我正在尝试通过 reactjs 前端构建一个分页的 table,所以我需要按照它在 blade 中正常工作的方式获取分页数据。我已经使用 paginate 方法代替 get 方法,但它仍然以某种方式提供相同的数据格式。这是我目前在我的 resolve 方法中所拥有的:

$models = YearModel
        ::with($with)
        ->select($select)
        ->where($where)
        ->orderByDesc('year_id');
    if (isset($args['limit'])) {
        $models = $models->paginate($args['limit']);
    } else {
        $models = $models->get();
    }
    return $models;

paginateget returns 相同的数据到前端,而我期望 paginate 提供一些数据,其中包括 currentPage、nextPage、previousPage 等内容LengthAwarePaginator class 通常可以。所以我相信 graphql 库在将分页数据返回到前端之前以某种方式将分页数据格式化为普通数据。我不确定为什么会这样,因为我是 graphql 的新手。请提出任何想法或解决方案。谢谢

我能够通过将查询 return 类型从 Type::nonNull(Type::listOf(Type::nonNull(GraphQL::type('YearModel')))) 更改为 GraphQL::paginate('YearModel') 并以这种方式修改我的查询来获得分页数据响应:

query {
        yearModels (limit: 10) {
            data {
                id
                year
            }
            total
            per_page
            current_page
            from
            to
            last_page
            has_more_pages
        }
    }`

data、total、per_page、current_page、from、to、last_page、has_more_pages 是来自 Rebing\GraphQL\Support\PaginationType getPaginationFields 的字段方法。