Magento2用GraphQL按自定义属性筛选产品报Field is not defined错误
问题原因
你参考的是Magento 2.4版本的官方文档,但你当前使用的2.3.4版本原生GraphQL并不支持直接将自定义属性的code作为筛选字段传入ProductAttributeFilterInput,该特性是2.4版本新增的功能,所以会触发字段未定义的报错。
解决方案
方案一:使用2.3版本原生支持的custom_attributes筛选(无需二次开发,直接可用)
直接修改查询语句如下:
{ products( filter: { custom_attributes: { attribute_code: "color" value: { eq: "4677" } } } ) { total_count items { name sku price } } }
使用前需要先确认color属性的后台设置:进入属性->店面属性选项卡,将用于产品列表和用于搜索两个选项均设置为是,否则筛选不会生效。
方案二:扩展GraphQL类型支持直接用color字段筛选(适合长期使用场景)
如果需要和2.4版本一致的调用方式,可以通过自定义模块扩展GraphQL schema实现:
- 在自定义模块的
etc/schema.graphqls文件中扩展输入类型:
input ProductAttributeFilterInput { color: FilterEqualType @doc(description: "Filter by product color attribute") }
- 开发对应的拦截插件,将传入的
color筛选条件转换为产品集合的属性过滤逻辑 - 执行
bin/magento setup:upgrade和bin/magento cache:clean后,即可使用你原来的查询语句发起请求
内容的提问来源于stack exchange,提问作者Marwa
相关产品推荐
相关产品推荐

