Php 如何使用Symfony和API平台在子对象上过滤GraphQL?
虽然我是一名经验丰富的开发人员,但我对Symfony/API Platfrom/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) {
产品
实体中添加一个过滤器,只允许过滤出活动产品。如果过滤器默认设置,则奖励积分-即默认情况下仅返回活动产品,如果希望查看非活动产品,则需要添加参数。但如果这太难,只需添加一个过滤器就可以了
好的,所以在我的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
}
}
}
}