gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 04:41:16 33 4
gpt4 key购买 nike

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

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

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

TAG-A|TAG-B,TAG-C

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

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

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

最佳答案

我能够通过使用 ContainsFilter 来解决这个问题:

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

关于php - 无法在 Shopware 6 中按多个标签过滤产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70122404/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com