首页 > 解决方案 > GraphQL GroupBy

问题描述

我试图弄清楚这是否可能,以及是否有最佳实践来完成。我们正在使用包https://github.com/Folkloreatelier/laravel-graphql在 Laravel 中实现 GraphQL API

假设我们希望按品牌分组的所有汽车在图表中显示每个品牌的数量。

没有分组的请求应该是这样的:

{
  cars {
    id,
    brand
  }
}

这样每个品牌的金额可以在客户端计算。但是如何在服务器端做到这一点。

例如:

{
  carMetrics(groupBy: "brand") {
    group,
    amount
  }
}

这将返回一个对象数组,其中包含该组中的汽车组和数量。

因为参数和结果的定义是最终的,我们必须为每个需要分组的对象创建一个新的查询和类型。这是要走的路还是有更动态的方法来在 GraphQL 中实现 group by?

标签: laravelgraphql

解决方案


我设置了一个简单的示例,说明我可能会在 Apollo Launch pad 上采取类似的方法:https ://launchpad.graphql.com/w9740qm8wz 。您可以使用底部的查询对其进行测试(它不会为您保存)。

定义会像这样

type Car {
  id: ID
    manufacturer: String
    name: String
}

type Manufacturers {
    name: String
    cars: [Car]
}

type Query {
  cars: [Car]
  manufacturers: [Manufacturers]
}

查询看起来更像这样:

{
  cars {
    ...car
  }
  manufacturers {
    name
    cars{
      ...car
    }
  }
}

fragment car on Car {
    id
    manufacturer
    name
}

推荐阅读