子查询的 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 体验,请确保在您要搜索的文本周围添加 %%。

希望这对某人有所帮助。我真的需要更多的例子。 :)