如何使用 Lighthouse 过滤字段值在 Laravel 5.8 中的 Graphql 查询
How to filter a Graphql query with a field value in Laravel 5.8 with Lighthouse
我有可以创建列表的用户。列表可以加星标("featured" 如果你愿意的话)。我想在 Lighthouse/Laravel 中构建一个 Graphql 查询,它将检索给定用户的所有 starred/featured 列表。
我试过这个查询并且有效:
clistsByStarred(user_id: Int! @eq, starred: Boolean! @eq): [Clist] @all
然后我就可以这样使用它了:
query {
clistsByStarred(user_id: 1, starred: true) {
id
name
starred
}
}
但对我来说这感觉像是一个肮脏的黑客。
我想实现的是:
query {
user(id: 1) {
id
name
clistsByStarred {
id
name
starred
}
}
}
知道如何实施吗?
type User {
id: ID!
clists(starred: Boolean @eq): Clist @hasMany
此示例为您提供了一个用户类型,其中包含一个 Clist 类型列表。
然后,您只需在查询中添加一个字段即可通过 ID 获取单个用户。
当你查询这个的时候,你可以指定参数stared来只获取stared。
要使此关系起作用,关系必须存在于您的 eloquent 模型中。
https://lighthouse-php.com/master/eloquent/relationships.html
我有可以创建列表的用户。列表可以加星标("featured" 如果你愿意的话)。我想在 Lighthouse/Laravel 中构建一个 Graphql 查询,它将检索给定用户的所有 starred/featured 列表。
我试过这个查询并且有效:
clistsByStarred(user_id: Int! @eq, starred: Boolean! @eq): [Clist] @all
然后我就可以这样使用它了:
query {
clistsByStarred(user_id: 1, starred: true) {
id
name
starred
}
}
但对我来说这感觉像是一个肮脏的黑客。
我想实现的是:
query {
user(id: 1) {
id
name
clistsByStarred {
id
name
starred
}
}
}
知道如何实施吗?
type User {
id: ID!
clists(starred: Boolean @eq): Clist @hasMany
此示例为您提供了一个用户类型,其中包含一个 Clist 类型列表。 然后,您只需在查询中添加一个字段即可通过 ID 获取单个用户。
当你查询这个的时候,你可以指定参数stared来只获取stared。
要使此关系起作用,关系必须存在于您的 eloquent 模型中。 https://lighthouse-php.com/master/eloquent/relationships.html