GraphQL查询能返回自定义字段,但Mutation提交后数据库没有变化。Resolver收到值并不代表值已经进入Service Contract和保存链。
实际处理步骤
- 在浏览器Network或GraphQL日志中确认变量类型、字段名与schema完全一致,先排除前端根本没提交。
- 给输入对象配置对应Input类型,在Resolver中把值写入Data Interface或Extension Attribute,不能只修改临时数组。
- 检查extension_attributes.xml、接口getter/setter以及Repository保存插件;保存后重新从Repository读取,不直接依赖Model状态。
- 清GraphQL与config缓存并重新编译,分别测试新增、修改、空值清除和权限不足。
检查命令
rg -n 'type .*Input|extension_attributes|setExtensionAttributes' app/code/Vendorbin/magento setup:di:compilebin/magento cache:clean config graphql
验证结果
Mutation响应与再次查询、REST读取及数据库结果一致,空值和非法值都有明确行为。

