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);