Shopware中商品变体继承属性但动态商品组未加载问题
商品变体无法加载动态商品组(streams)关联的解决方案
问题重现
通过装饰器扩展Product Repository的search方法,添加streams关联后,仅主商品能正常加载动态商品组,商品变体虽已继承父商品属性,但无法加载对应streams,仅propertyIds正常加载(Shopware默认行为)。实现代码如下:
public function search(Criteria $criteria, SalesChannelContext $salesChannelContext): EntitySearchResult { $criteria->addAssociation('streams'); return $this->decorated->search($criteria, $salesChannelContext); }
问题原因
Shopware中,商品变体的动态商品组关联并非直接绑定在变体实体上,而是继承自其所属的父商品。原代码仅为主商品添加streams关联,未处理变体通过父商品关联加载的逻辑。
修复代码
修改装饰器的search方法,同时添加变体到父商品的streams关联:
public function search(Criteria $criteria, SalesChannelContext $salesChannelContext): EntitySearchResult { // 为主商品添加streams关联 $criteria->addAssociation('streams'); // 为商品变体添加父商品的streams关联 $criteria->addAssociation('parent.streams'); return $this->decorated->search($criteria, $salesChannelContext); }
使用说明
获取变体数据时,需通过变体的parent关联对象读取streams数据,而非直接从变体实体本身获取。
内容的提问来源于stack exchange,提问作者Alphaegen
相关产品推荐
相关产品推荐

