无法在 Shopware 6 中按多个标签过滤产品

Cannot filter products by multiple tags in Shopware 6

我的问题之前的一些背景知识:

一个产品有多个标签,假设有 6 个标签,我们想过滤出这 4 个标签中有 2 个存在的产品,但只有那些同时具有这 2 个标签的产品。有没有办法使用 criteria 来做到这一点?示例过滤器请求如下:

Select 所有具有(TAG A 和 TAG B)或(TAG C)的产品

TAG-A|TAG-B,TAG-C

我已经尝试过使用 EqualsAnyFilter,但它的选择类似于 OR,它过滤只有标签 A 的产品 - 但我希望它是一个 AND 过滤器。仅使用 EqualsFilter 似乎没有 returning 任何产品。

        $criteria = new Criteria();
        $criteria->addAssociation('tags');

        $orFilters = [];

        $orTags = explode(',', 'TAG-A|TAG-B,TAG-C'); // Based on above scenario

        foreach ($orTags as $orTag) {
            $andFilters = [];
            $andTags = explode('|', $orTag);
            
            // Attempt 1 with EqualsAnyFilter
            $andFilters[] = new EqualsAnyFilter('tags.name', $andTags);


            // Attempt 2 with EqualsFilter
            foreach ($andTags as $andTag) {
                $andFilters[] = new EqualsFilter('tags.name', $andTag);
            }


            if ($andFilters) {
                $orFilters[] = new AndFilter($andFilters);
            }
        }

        if ($orFilters) {
            $criteria->addFilter(new OrFilter($orFilters));
        }

但这并不是return想要的结果。有没有办法像这样过滤产品?欢迎提出任何建议。谢谢!

我可以通过使用 ContainsFilter 来计算如下:

    foreach ($andTags as $andTag) {
        $andFilters[] = new ContainsFilter('tagIds', $andTag);
    }