【发布时间】:2020-01-18 22:43:05
【问题描述】:
假设我们有 Series 和 Episodes,并且每个 Series 都有很多 Episode:
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 文档说我们还可以通过在 @hasMany 指令 (https://lighthouse-php.com/master/api-reference/directives.html#hasmany) 上设置 type 来对关系进行分页,如下所示:
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'" 这究竟是什么意思,我如何获得直接对相关模型和所有模型进行分页的能力?
【问题讨论】:
标签: laravel graphql laravel-lighthouse