调用OroCommerce API创建产品时无故新增关联关系如何解决
OroCommerce API创建产品自动生成额外本地化关联的解决方法
问题原因
该现象是OroCommerce的默认本地化架构逻辑导致的:只要系统后台启用了至少一个本地化项(你返回结果中localizations id为1的就是你系统当前已启用的本地化),创建产品时系统会自动为所有已启用的本地化生成名称、描述等本地化字段的默认关联记录,默认配置为fallback: "system",值为空,并非接口异常。
可行解决方案
- 方案1:POST请求中显式声明所有已启用本地化对应的关联值
不要仅传入localization为null的全局默认值,你需要把系统所有已启用的本地化对应的关联记录都在included中显式声明,覆盖系统默认生成逻辑,示例如下:
如果你不需要该本地化的字段值,可以将{ "data": { "type": "products", "attributes": {}, "relationships": { "names": { "data": [ {"type": "productnames", "id": "name-default"}, {"type": "productnames", "id": "name-local-1"} ] } } }, "included": [ // 全局默认名称 { "type": "productnames", "id": "name-default", "attributes": { "fallback": null, "string": "testt" }, "relationships": { "localization": {"data": null} } }, // 已启用的id=1的本地化对应名称,显式声明后系统不会自动生成空记录 { "type": "productnames", "id": "name-local-1", "attributes": { "fallback": null, "string": "测试产品" }, "relationships": { "localization": {"data": {"type": "localizations", "id": "1"}} } } ] }string设为null,只要显式声明了对应本地化的关联,系统就不会再额外生成空记录。 - 方案2:关闭不需要的本地化项
如果你不需要多本地化功能,可以登录OroCommerce后台,进入「系统」-「本地化」设置,禁用所有不需要的本地化项,仅保留你需要的配置,系统就不会生成多余的本地化关联记录。 - 方案3:二次开发重写默认逻辑
如果你有二次开发能力,可以自定义扩展重写产品实体本地化字段的初始化逻辑,跳过自动生成空关联记录的步骤,适配你的业务需求。
内容的提问来源于stack exchange,提问作者BSoD
相关产品推荐
相关产品推荐

