首页 > 解决方案 > Laravel Lighthouse:在相关模型上使用 @paginate 会破坏直接查询模型的能力

问题描述

假设我们有 Series 和 Episodes,并且每个 Series 都有很多 Episodes:

type Query {
  series: [Series!]! @paginate(defaultCount: 10)
  series(id: ID @eq): Series @find

  episodes: [Episode!]! @paginate(defaultCount: 10)
  episode(id: ID @eq): Episode @find
}

type Series {
  id: ID!
  title: String!
  episodes: [Episode]! @hasMany
  plot: String!
}

type Episode {
  id: ID!
  title: String!
  season: Int!
  series: Series! @belongsTo
  plot: String!
}

一切正常。我们可以查询系列和剧集,它们是分页的。

Lighthouse 文档说我们还可以通过设置指令(https://lighthouse-php.com/master/api-reference/directives.html#hasmanytype )来对关系进行分页,如下所示:@hasMany

type Series {
  id: ID!
  title: String!
  episodes: [Episode]! @hasMany(type: "paginator")
  plot: String!
}

这在查询这样的系列时效果很好:

query series {
  series {
    paginatorInfo {
      total
      currentPage
      hasMorePages
    }
    data {
      title
      episodes {
        paginatorInfo {
          total
          currentPage
          hasMorePages
        }
        data {
          title
        }
      }
    }
  }
}

系列和他们的剧集都被分页。

但是现在我不能再直接查询剧集了:

query episodes {
  episodes {
    paginatorInfo {
      total
      currentPage
      hasMorePages
    }
    data {
      title
    }
  }
}

这将返回错误No class 'EpisodePaginator' was found for directive 'paginate'"这到底是什么意思,以及如何获得直接对相关模型和所有模型进行分页的能力?

标签: laravelgraphqllaravel-lighthouse

解决方案


这是一个错误,已在 v4.8.1 中修复https://github.com/nuwave/lighthouse/releases/tag/v4.8.1


推荐阅读