如何使用 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