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

Shopware 6 DAL如何比较订单的两个字段属性值?

在Shopware 6 Data Abstraction Layer中实现实体字段间的比较

你用EqualsFilter出错是因为这个过滤器本来就是用来字段和固定值比较的,第二个参数会被当作字符串值传入,所以数据库会把createdAt当成字符串去匹配updatedAt的datetime值,自然报格式错误。

要实现字段与字段之间的比较,得用Shopware 6专门提供的ComparisonFilter,它支持直接指定两个字段路径进行对比。

具体实现步骤:

  1. 引入对应的过滤器类:
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\ComparisonFilter;
  1. 创建字段比较的过滤器实例:
// 用OPERATOR_EQ表示两个字段值相等
$fieldComparisonFilter = new ComparisonFilter(
    ComparisonFilter::OPERATOR_EQ,
    'createdAt',
    'updatedAt'
);
  1. 将过滤器添加到查询条件中并执行搜索:
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;

$criteria = new Criteria();
$criteria->addFilter($fieldComparisonFilter);

// 调用订单仓库执行查询
$orders = $this->orderRepository->search($criteria, $context)->getEntities();

这个过滤器还支持其他比较操作符,比如OPERATOR_GT(大于)、OPERATOR_LT(小于)等,按需替换第一个参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:19:57