子查询的 GraphQL 查询参数
GraphQL query param on sub query
我正在将 Lighthouse 与 GraphQL 结合使用,并试图弄清楚如何将参数传递给关系(我觉得我没有使用正确的术语)。
这是我得到的:
type Entry {
id: ID!
site_id: ID
slug: String!
admin_note: String
type: String!
sub_type: String
content(status: String): EntryContent @hasOne
versions: [EntryContent!]! @hasMany
magazineIssues: [MagazineIssue]! @belongsToMany
contentPackages: [ContentPackage]! @belongsToMany
published_at: DateTime
created_at: DateTime
updated_at: DateTime
deleted_at: DateTime
}
# Query
entries(first: Int!, page: Int, type: String @eq, site_id: ID @eq, status: String): [Entry!]! @paginate
export const ALL_SITE_ENTRIES = gql`
query Entries($first: Int!, $page: Int, $type: String, $site_id: ID, $status: String) {
entries(first: $first, page: $page, type: $type, site_id: $site_id, status: $status) {
data {
...EntryDetails
content(status: $status) {
id
title
status
}
}
paginatorInfo {
currentPage
lastPage
total
}
}
}
${EntryDetailsFragment}
`
我正在使用分页查询条目,但我需要为特定内容状态传递一个参数。我尝试了上面的方法,但出现错误:
message: "Fields \"content\" conflict because they have differing arguments. Use different aliases on the fields to fetch both if this was intentional."
但我不明白为什么我需要这样的参数别名。有没有办法将参数传递给 relationship/query?
谢谢!
所以在疯狂的反复试验之后,我想出了某种解决方案,结果发现我们的 Laravel 关系并没有完全恢复原样。但是,对于任何想要了解如何查询嵌套关系示例的人来说,这里有一个适用于不同列的好示例:
extend type Query {
entries(first: Int!,
page: Int,
type: String @eq,
site_id: ID @eq,
hasContent: _ @whereHasConditions(relation: "content", columns: ["title"])
): [Entry!]! @paginate
}
export const ALL_SITE_ENTRIES = gql`
query Entries($first: Int!, $page: Int, $type: String, $site_id: ID, $title: Mixed) {
entries(
first: $first,
page: $page,
type: $type,
site_id: $site_id,
hasContent: {column: TITLE, operator: LIKE, value: $title}
) {
data {
...EntryDetails
content{
id
title
status
}
}
paginatorInfo {
currentPage
lastPage
total
}
}
}
${EntryDetailsFragment}
`
注意:要获得完整的 LIKE 体验,请确保在您要搜索的文本周围添加 %%。
希望这对某人有所帮助。我真的需要更多的例子。 :)
我正在将 Lighthouse 与 GraphQL 结合使用,并试图弄清楚如何将参数传递给关系(我觉得我没有使用正确的术语)。
这是我得到的:
type Entry {
id: ID!
site_id: ID
slug: String!
admin_note: String
type: String!
sub_type: String
content(status: String): EntryContent @hasOne
versions: [EntryContent!]! @hasMany
magazineIssues: [MagazineIssue]! @belongsToMany
contentPackages: [ContentPackage]! @belongsToMany
published_at: DateTime
created_at: DateTime
updated_at: DateTime
deleted_at: DateTime
}
# Query
entries(first: Int!, page: Int, type: String @eq, site_id: ID @eq, status: String): [Entry!]! @paginate
export const ALL_SITE_ENTRIES = gql`
query Entries($first: Int!, $page: Int, $type: String, $site_id: ID, $status: String) {
entries(first: $first, page: $page, type: $type, site_id: $site_id, status: $status) {
data {
...EntryDetails
content(status: $status) {
id
title
status
}
}
paginatorInfo {
currentPage
lastPage
total
}
}
}
${EntryDetailsFragment}
`
我正在使用分页查询条目,但我需要为特定内容状态传递一个参数。我尝试了上面的方法,但出现错误:
message: "Fields \"content\" conflict because they have differing arguments. Use different aliases on the fields to fetch both if this was intentional."
但我不明白为什么我需要这样的参数别名。有没有办法将参数传递给 relationship/query?
谢谢!
所以在疯狂的反复试验之后,我想出了某种解决方案,结果发现我们的 Laravel 关系并没有完全恢复原样。但是,对于任何想要了解如何查询嵌套关系示例的人来说,这里有一个适用于不同列的好示例:
extend type Query {
entries(first: Int!,
page: Int,
type: String @eq,
site_id: ID @eq,
hasContent: _ @whereHasConditions(relation: "content", columns: ["title"])
): [Entry!]! @paginate
}
export const ALL_SITE_ENTRIES = gql`
query Entries($first: Int!, $page: Int, $type: String, $site_id: ID, $title: Mixed) {
entries(
first: $first,
page: $page,
type: $type,
site_id: $site_id,
hasContent: {column: TITLE, operator: LIKE, value: $title}
) {
data {
...EntryDetails
content{
id
title
status
}
}
paginatorInfo {
currentPage
lastPage
total
}
}
}
${EntryDetailsFragment}
`
注意:要获得完整的 LIKE 体验,请确保在您要搜索的文本周围添加 %%。
希望这对某人有所帮助。我真的需要更多的例子。 :)