php - Shopware 6 - 使用 DAL 过滤实体内的集合

标签 php shopware

我想获取所有产品流,其中至少有一个类别。我正在尝试这样做:

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

关于php - Shopware 6 - 使用 DAL 过滤实体内的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66424233/

相关文章:

php - 使用 DOMDocument 将表格的内容添加到数组中

php - 检查 Queue::before 中的 Laravel Jobs 以在处理之前删除

php - 获取刚刚用mysql准备好的语句添加的记录ID

PHP 提取到类变量中

php - 如何在 Shopware 6 Controller 中发送电子邮件?

symfony - 如何从 Shopware 6 中的缓存中排除站点?

php - SWIG fatal error : can not redeclare class

plugins - 有没有办法为具有翻译的插件添加优先级?

shopware - 更改 Shopware 中的前端语言和多国家/地区支持

Shopware 6 管理构建插件