Shopware 6 - 使用 DAL 过滤实体内的集合
Shopware 6 - Using DAL to filter collections inside entities
我想获取所有产品流,其中至少有一个类别。我正在尝试这样做:
$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);
我想获取所有产品流,其中至少有一个类别。我正在尝试这样做:
$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);