Image Mapping über Variant Resource in Rest API fehlerhaft

Hallo zusammen,

ich habe im Moment das Problem, dass wir mit einem selbst geschriebenen Importscript Bilder für unsere Artikel importieren. Das ganze Bundle schicke ich als JSON encoded an die REST API unter /api/variants/[orderNr]?useNumberAsId=true - das funktioniert auch soweit, allerdings scheint das Mapping nicht zu klappen.

Im Artikelkonfigurator haben wir eigentlich nur „Farben“ angelegt und jede Variante bekommt beim Artikelimport (welcher gesondert vor dem Bilderimport stattfindet, da der Bilderimport halt sehr lange dauert) eine Farbe zugewiesen - bspw. „gelb“. Das klappt auch alles soweit und wenn man die Variante im Frontend sowie im Backend aufruft, passt alles.

Wenn ich jetzt die Bilder über die „Variants“ Resource importiere, werden diese automatisch dieser Variante zugewiesen, was auch auf dem Papier super funktioniert. Wenn ich im Backend den Artikel öffne und die Bilder ansehe, sind alle Bilder richtig jeweils einer Variante zugeordnet - die gelben Bilder der gelben Variante, die grünen Bilder der grünen, etc. - wenn ich den Artikel nun aber im Frontend aufrufe, werden alle Variantenbilder angezeigt - als ob sie überhaupt keine Zuordnung hätten.

Kann man hier wunderbar beobachten: https://www.hulle24.de/moex-citysling-samsung-galaxy-s8-plus-handytasche-zum-umhaengen?number=265028
Hier sind bspw. bei der roten Variante auch Bilder der orangenen zugewiesen - wenn ich im Backend die orangenen Bilder öffne, sind sie nur der orangenen („Sonnengelb“) zugewiesen.

Wenn ich die Variante auch über GET „api/variants/[orderNr]?useNumberAsId=true“ anschaue, sehe ich, dass da nur 7 Bilder zugeordnet sind - was ja auch absolut richtig ist.

Dass unter dem Mainbild alle Bilder angezeigt werden, liegt daran, dass aus irgendeinem Grund trotzdem alle Artikelbilder im Theme unter $sArticle.images eingetragen sind - warum ist das so, kann mir das irgendwer erklären?

Übrigens: wenn ich die Konfiguration der jeweiligen Bilder im Backend öffne, speichere und schließe ohne etwas zu verändern, berichtigt sich das. Allerdings sind hier hunderte, wenn nicht sogar tausende Bilder von betroffen, das kann ich natürlich nicht für alle manuell machen. Das deutet also für mich darauf hin, dass beim Import irgendein Vermerk in der Datenbank nicht richtig gesetzt wird oder das Mapping halt fehlerhaft angelegt wird - ist die Rest API da nicht für ausgelegt? Wenn nicht, wieso bietet sie dann überhaupt die Möglichkeit, für Varianten Bilder zu importieren?

Ich hoffe, irgendeiner kann sich da einen Reim draus machen und mir erklären, was ich falsch mache :slight_smile:

Liebe Grüße!

Die Referenzen zwischen Artikel und Bild werden in der Tabelle s_articles_img
(und s_articles_img_attributes) abgelegt.
Konkret zu deinem Problem mit Varianten und der API kann ich nichts beitragen.

Das weiß ich bereits. Ich hab auch schon folgende SQL geschrieben, um nur die Bilder für eine einzelne Variante zu bekommen:

select  i.id 'imgId'
from    s_articles_img i
        left join s_article_img_mappings im on im.image_id = i.id
        left join s_article_img_mapping_rules imr on imr.mapping_id = im.id
        left join s_article_configurator_options co on co.id = imr.option_id
        left join s_articles_details ad on ad.articleID = i.articleID
where   im.id is not null
        and co.id is not null
        and ad.ordernumber = $variantId
        and co.id = (select  cor.option_id 
                    from     s_article_configurator_option_relations cor
                             left join s_articles_details ad on ad.id = cor.article_id
                    where    ad.ordernumber = $variantId)

Auch diese gibt bei der entsprechenden Variante nur die (richtig) zugeordneten Bilder zurück, im Frontend ist es aber weiterhin Kraut und Rüben :confused:

Versuch mal mit dem Frosh Profiler oder im Source Code an das SQL zu kommen, was Shopware an die Datenbank schickt, um die zugeordneten Bilder auf der Artikeldetailseite zu ermitteln.