首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shopware6 -由于foreach循环无法获得值

Shopware6 -由于foreach循环无法获得值
EN

Stack Overflow用户
提问于 2021-06-04 15:18:10
回答 1查看 92关注 0票数 0

我们现在有这样的代码来获得一些属性组选项:

代码语言:javascript
复制
//Nederlands & English
$languages = ['94a1a2d118464bdaab37d6e05d404508', '2fbb5fe2e29a4d70aa5854ce7ce3e20b'];
$context = new Context(new SystemSource(), [], Defaults::CURRENCY, $languages);
$criteria = new Criteria();

Foreach ($propertiesArray as $property)
{
    $criteria->addFilter(new EqualsFilter('name', $property['name']);
    $lineInfo = $this->propertyGroupOptionRepository->search($criteria, $context)->first();
    var_dump($lineInfo);
}

由于某些原因,它无法获得'Zilver‘值,而$lineInfo返回空对象。但是值'Zilver‘存在于db中,其中language_id of 'Nederlands’= 94a1a2d118464bdaab37d6e05d404508 (在上下文中给定)。

奇怪的事实:它非常适合我的$propertiesArray数组的第一项。如果我尝试用'Zilver‘替换$property’‘value’并将其与foreach循环隔离开来,我就可以得到所需的结果。

我是不是做错了什么或误解了它的工作方式?

下面是$propertiesArray =的转储

代码语言:javascript
复制
      [0]=>
      array(1) {
        ["value"]=>
        string(10) "Eenkleurig"
      }
      [1]=>
      array(1) {
        ["value"]=>
        string(6) "Zilver"
      }
      [2]=>
      array(1) {
        ["value"]=>
        string(5) "Praag"
      }

信息:我们实例的主要语言是英语,但我们目前正在使用一个系统,该系统在尼德兰向我们发送价值观。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-06 09:27:35

我对shopware并不完全确定,但是,您的逻辑似乎有缺陷,因为您在每次迭代中都要向相同的EqualsFilter中添加一个额外的Criteria。这就是为什么只有第一次搜索是成功的。

尝试在循环中创建一个新的Criteria

代码语言:javascript
复制
//Nederlands & English
$languages = ['94a1a2d118464bdaab37d6e05d404508', '2fbb5fe2e29a4d70aa5854ce7ce3e20b'];
$context = new Context(new SystemSource(), [], Defaults::CURRENCY, $languages);

Foreach ($propertiesArray as $property)
{
    $criteria = new Criteria();
    $criteria->addFilter(new EqualsFilter('name', $property['name']);
    $lineInfo = $this->propertyGroupOptionRepository->search($criteria, $context)->first();
    var_dump($lineInfo);
}

在查看了这些文档之后,我认为您可能实际上希望使用EqualsAnyFilter,然后只需要对数据库进行一个查询。这应该是更有效率的。

代码语言:javascript
复制
//Nederlands & English
$languages = ['94a1a2d118464bdaab37d6e05d404508', '2fbb5fe2e29a4d70aa5854ce7ce3e20b'];
$context = new Context(new SystemSource(), [], Defaults::CURRENCY, $languages);
$criteria = new Criteria();

$criteria->addFilter(new EqualsAnyFilter('name', array_column($propertiesArray, 'name')));
$results= $this->propertyGroupOptionRepository->search($criteria, $context);
var_dump($results);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67839794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档