首页 > 解决方案 > 如何使用 Lighthouse 在 Laravel 5.8 中使用字段值过滤 Graphql 查询

问题描述

我有可以创建列表的用户。列表可以加星标(如果您愿意,可以选择“精选”)。我想在 Lighthouse/Laravel 中构建一个 Graphql 查询,该查询将检索给定用户的所有加星标/精选列表。

我尝试了这个查询并且它有效:


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
     }
   }
 }

关于如何实施它的任何想法?

标签: laravelgraphqllaravel-lighthouse

解决方案


type User {
 id: ID!
 clists(starred: Boolean @eq): Clist @hasMany

此示例为您提供了具有 Clist 类型列表的用户类型。然后,您只需在查询中添加一个字段即可通过 id 获取单个用户。

当您查询此内容时,您可以指定参数starred 以仅获得starred。

为此,该关系必须存在于您的雄辩模型上。 https://lighthouse-php.com/master/eloquent/relationships.html


推荐阅读