【问题标题】:How to filter a Graphql query with a field value in Laravel 5.8 with Lighthouse如何使用 Lighthouse 在 Laravel 5.8 中使用字段值过滤 Graphql 查询
【发布时间】:2019-11-28 14:35:24
【问题描述】:

我有可以创建列表的用户。列表可以加星标(如果您愿意,可以选择“精选”)。我想在 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
     }
   }
 }

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

【问题讨论】:

标签: laravel graphql laravel-lighthouse


【解决方案1】:
type User {
 id: ID!
 clists(starred: Boolean @eq): Clist @hasMany

这个例子给你一个用户类型,它有一个 Clist 类型的列表。 然后,您只需在查询中添加一个字段即可通过 id 获取单个用户。

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

为了使这个工作,关系必须存在于您的雄辩模型中。 https://lighthouse-php.com/master/eloquent/relationships.html

【讨论】:

  • 它曾经工作正常。但是后来我安装了 Passport 和 lighthouse-graphql-passport-auth plugin,但它不再起作用了。这是 Graphql Playground 的 screenshot。但身份验证工作正常。知道为什么吗?
  • 其实原因是插件使用了自己的User类型。我的被​​覆盖了。问题解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 2022-12-14
  • 2021-07-16
  • 2019-11-15
  • 2017-01-24
  • 2019-02-06
  • 2021-12-07
相关资源
最近更新 更多