You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopware6如何筛选无跟踪码订单?空JSON数组过滤方案

筛选无跟踪码的订单解决方案

在Shopware中,EqualsFilter确实不支持直接传入空数组作为筛选值。要筛选跟踪码列表为空的订单,你可以使用EmptyFilter或者CountFilter来实现:

方法一:使用EmptyFilter

EmptyFilter专门用于检查字段是否为空(包括空数组),直接替换你原来的EqualsFilter即可:

$criteria = new Criteria();
$criteria->addAssociation('deliveries');
// 筛选trackingCodes为空数组的订单
$criteria->addFilter(new EmptyFilter('deliveries.trackingCodes', true));
$orders = $this->orderRepository->search($criteria, $this->context);

方法二:使用CountFilter(检查数组长度为0)

如果EmptyFilter不符合你的需求,还可以通过检查跟踪码数组的元素数量是否为0来实现:

$criteria = new Criteria();
$criteria->addAssociation('deliveries');
// 筛选trackingCodes数组元素数量等于0的订单
$criteria->addFilter(new CountFilter('deliveries.trackingCodes', CountFilter::EQ, 0));
$orders = $this->orderRepository->search($criteria, $this->context);

补充说明

  • 确保已经正确关联了deliveries,你代码中的addAssociation('deliveries')是正确的,这是筛选关联字段的前提。
  • 数据库中存储的空数组通常是[],但EmptyFilter会自动匹配这种存储格式,不需要手动传字符串形式的'[]'。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:24:53