Php 如何使用Symfony和API平台在子对象上过滤GraphQL?

Php 如何使用Symfony和API平台在子对象上过滤GraphQL?,php,symfony,graphql,api-platform.com,Php,Symfony,Graphql,Api Platform.com,虽然我是一名经验丰富的开发人员,但我对Symfony/API Platfrom/GraphQL还是相当陌生的。我的任务很简单-在产品实体中添加一个过滤器,只允许过滤出活动产品。如果过滤器默认设置,则奖励积分-即默认情况下仅返回活动产品,如果希望查看非活动产品,则需要添加参数。但如果这太难,只需添加一个过滤器就可以了 好的,所以在我的Product.php中我有(只显示了相关部分): 然后,我尝试修改现有查询以仅过滤出活动产品: { sellers(id: 5, active: true) {

虽然我是一名经验丰富的开发人员,但我对Symfony/API Platfrom/GraphQL还是相当陌生的。我的任务很简单-在
产品
实体中添加一个过滤器,只允许过滤出活动产品。如果过滤器默认设置,则奖励积分-即默认情况下仅返回活动产品,如果希望查看非活动产品,则需要添加参数。但如果这太难,只需添加一个过滤器就可以了

好的,所以在我的
Product.php
中我有(只显示了相关部分):

然后,我尝试修改现有查询以仅过滤出活动产品:

{
  sellers(id: 5, active: true) {
    edges {
      node {
        categories {
          edges {
            node {
              products (active: true) {
                totalCount
                edges {
                  node {
                    name
                }
              }
            }
          }
        }
      }
    }
  }
}
Buuuut,我明白了:

{
  "errors": [
    {
      "message": "Unknown argument \"active\" on field \"products\" of type \"Category\".",
      "category": "graphql",
      "locations": [
        {
          "line": 39,
          "column": 25
        }
      ]
    }
  ]
}
现在,如果我将其更改为直接查询产品:

{
  products (active: true) {
    totalCount
    edges {
      node {
        name
      }
    }
  }
}
真管用


那么,发生了什么事?我希望对原始查询进行筛选,以便它也返回所有其他数据,而不仅仅是普通产品。我做错了什么?感觉好像我误解了一些基本概念。

我认为这是一个有害的错误,已在master和2.4分支中解决(尚未发布)。
有关详细信息,请参见。

错误消息指向
类别上的
产品
,类型/类别-它可能不同于
产品
@xadm-如果您的意思是
类别。产品
可能不是
产品
类型,则否-它是正确的类型。否,两个“点”上有不同的“功能”-您需要在
类别上有一个单独的“筛选注释”。产品
-类别解析程序需要知道是否可以在该字段上进行筛选/relation@xadm-嗯。。。对不起,你把我弄丢了。您能更详细地解释一下吗?您需要一个
产品。在
类别
上启用的
过滤器-请参阅
{
  products (active: true) {
    totalCount
    edges {
      node {
        name
      }
    }
  }
}