我正在创建一个自定义插件,如果客户输入订单号和邮政编码,它将显示订单信息。我的问题是,当某篇文章具有变体形式时,它会多次输出同一篇文章,我想这是因为我正在对 s_articles_img 表(从(已订购商品,如果是变体商品),则多次存储相同值,在这种情况下,是 articleID 。
我拥有的leftjoin:
color
我用本地商店的安装程序和演示数据进行了测试,其中有一篇名为 Variantenartikel 的文章,该文章是尺寸和颜色各不相同的T恤。因此, s_article_img 表的衬衫,shirt_red和Shirt_blue的 articleID (5)的值是其三倍。
所以我的问题是:我怎么只能得到我需要的?我试图找到表之间的关系,但是看不到哪里。我检查了 s_order_details表,s_media 等。但是这些表之间没有任何关系。
我想念什么吗?
这是我完整的查询生成器:
->leftJoin('a', 's_articles_img', 'f', 'f.articleID = e.articleID')
我不是数据库查询方面的专家,因此,如果这不是很准确,我深表歉意。
谢谢。
答案 0 :(得分:1)
您可以使用此功能获取特定版本的封面图片:https://github.com/shopware/shopware/blob/512cc0ff59c431bbf0d1e968ec0b435e38a576ab/engine/Shopware/Core/sArticles.php#L1758
类似这样的东西:
$article = Shopware()->Modules()->Articles()->sGetArticleById($position['articleID']);
$article = Shopware()->Modules()->Articles()->sGetConfiguratorImage($article);
当您只需要封面图像时,此功能将执行以下操作:https://github.com/shopware/shopware/blob/512cc0ff59c431bbf0d1e968ec0b435e38a576ab/engine/Shopware/Core/sArticles.php#L1265
图像/选项关系保存在s_article_img_mapping_rules中。当图像具有映射时,它将保存在s_article_img_mappings中。从文章到图片应该是很繁琐的SQL语句:
s_article_details.id-> s_article_configurator_option_relations.option_id-> s_article_img_mapping_rules.mapping_id-> s_article_img_mappings.image_id-> s_article_img.id