如何通过商品/客户编号而非ID在Shopware 6 Sync API中Upsert商品或客户?
Shopware 6 Sync API批量更新商品(无需提前查询ID)
Shopware 6的Sync API本身支持通过商品的唯一标识字段(比如商品编号productNumber)直接执行upsert操作,不需要额外调用search接口获取ID。核心是在sync请求的action配置中指定匹配用的唯一字段,payload里传入该字段的值而非ID即可。
具体请求示例
POST {{baseurl}}/api/_action/sync
请求体调整为:
{ "upsert-products": { "action": "upsert", "entity": "product", "identifier": "productNumber", // 指定用商品编号作为匹配依据 "payload": [ { "productNumber": "PROD-001", // 替换为目标商品的编号 "name": "更新后的商品名称", "price": [ { "currencyId": "b7d2554b0ce847cd82f3ac9bd1c0dfca", "gross": 99.99, "net": 83.32, "linked": true } ] // 其他需要更新的字段 }, { "productNumber": "PROD-002", "stock": 50 // 其他字段 } ] } }
关键注意事项
identifier参数用来指定匹配实体的唯一字段,Shopware默认productNumber是商品实体的唯一约束字段,可直接使用;如果用自定义唯一属性,只要该字段在实体定义中被设置为唯一,也可填入此处。- 该逻辑遵循upsert特性:Sync API会先根据
identifier指定的字段值查找对应商品,找到则更新,找不到则创建新商品。 - 务必确保传入的
productNumber准确,避免意外创建重复商品。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

