首页 > 解决方案 > 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

无论我做什么,我总是会收到这个错误。我做错了什么或者我将如何存档?

标签: phpshopware

解决方案


其实很简单。而不是像这样添加过滤器:

new EqualsFilter('categories', null);

你实际上需要这样做:

new EqualsFilter('categories.id', null);

您也可以将其链接多次,这样您就可以按子集合进行过滤:

new EqualsFilter('categories.salesChannel.id', null);

推荐阅读