php - Shopware 6 - 使用 DAL 过滤实体内的集合
问题描述
我想获得所有至少有一个类别的产品流。我正在尝试这样做:
$criteria = new Criteria();
$criteria->addAssociation('categories');
$criteria->addFilter(new NotFilter(
NotFilter::CONNECTION_OR,
[
new EqualsFilter('categories', null)
// Also tried this:
// new EqualsFilter('categories', ['id' => null])
]
));
$productStreams = $productStreamRepo->search($criteria, $this->context);
但这总是会导致以下错误:
Call to a member function buildAccessor() on null
无论我做什么,我总是会收到这个错误。我做错了什么或者我将如何存档?
解决方案
其实很简单。而不是像这样添加过滤器:
new EqualsFilter('categories', null);
你实际上需要这样做:
new EqualsFilter('categories.id', null);
您也可以将其链接多次,这样您就可以按子集合进行过滤:
new EqualsFilter('categories.salesChannel.id', null);
推荐阅读
- html - 是否有使用 html 和 WordPress [短代码] 的 Emacs 模式?
- django - Django ORM - 使用 PostgreSQL 在同一个表上的 GROUP BY 子查询的内部联接
- javascript - 为什么 setState 不像以前那样堆叠?
- pentaho-report-designer - 有没有办法在 pentaho 报表设计器的各个页面中计算小计?
- python - 如何在以前的函数中引用变量?
- c# - 使用 WebClient 下载 JSON 会导致奇怪的类似 unicode 的字符?
- go - 避免为本地模块的递归依赖编写“替换”
- android - 关于使用 Fastlane + Gitlab 在 Android Play Store 上上传应用程序
- python - 运行代码时显示错误,我无法弄清楚第二个问题
- sql-server-2019 - 实时监控