Shopware 6 Admin API:如何实现两字段相乘后求和的聚合查询
Shopware聚合实现字段乘积求和的方案
现有聚合功能能否实现?
Shopware官方提供的sum(field)聚合仅支持对单个字段进行求和,无法直接实现「两个字段相乘后再求和」的逻辑,没办法直接复刻你给出的SQL查询效果。
替代解决方案
1. 实体新增计算字段(推荐)
在对应myTable的Shopware实体中,添加一个只读的计算字段(比如命名为fieldProduct),将其数据库层面的计算规则设置为fieldA * fieldB。之后就可以直接通过sum('fieldProduct')聚合来实现需求,这种方式完全适配Shopware的DAL查询体系,后续维护也更方便。
2. 自定义聚合类
继承Shopware默认的SumAggregation类,重写它的build方法,在构建SQL聚合逻辑时,将求和目标替换为fieldA * fieldB的表达式,而不是单个字段。完成后将自定义聚合类注册到Shopware的DI容器中,即可在查询中使用该自定义聚合实现需求。
3. 执行原生SQL查询
如果不需要适配Shopware的DAL查询规范,可以直接通过Shopware的Connection对象执行你给出的原生SQL语句,直接获取计算结果。
内容的提问来源于stack exchange,提问作者rammi22
相关产品推荐
相关产品推荐

