我为Shopware 6创建了一个插件,并尝试创建多个产品。在创建一些产品之前,我在管理面板中添加了一些演示产品。但是如果我读取这些产品的变量,则字段violet和categories为空,但是在管理面板中有一些值。我不明白为什么在管理面板中它可以显示,而在插件中它是空的。代码在bin/console的命令中运行。
$context = Context::createDefaultContext();
$products = $this->productRepository->search(new Criteria(), $context);
foreach ($products as $p => $product) {
$product->get('visibilities'); // -> empty in command but not in admin panel
$product->get('categories'); // -> empty in command but not in admin panel
}
1条答案
按热度按时间czq61nw11#
在Shopware 6中,当您使用ProductRepository从数据库中检索产品时,默认情况下通常不会加载产品的可见性和类别。这是因为Shopware出于性能原因使用称为“关联”的概念延迟加载相关数据。这意味着当您检索产品时,可能不会加载其相关数据(如类别和可见性),直到明确请求。
要确保为代码中的每个产品加载可见性和类别数据,可以使用addAssociation方法指定要为每个产品加载哪些关联。以下是如何修改代码以加载每个产品的可见性和类别:
通过向标准添加“访问量”和“类别”的关联,您可以指示SW在执行搜索时将这些相关实体沿着产品一起加载。这将用您期望的数据填充字段。