Produkt Import: Wie steuern ob Elemente (Kategorien, Properties) zugefügt oder kpl. ersetzt werden

Hallo,

wir aktualisieren bestehende Produkte über den Import in dem das Feld „id“ mit der Produkt UUID ausgefüllt ist. Das funktioniert soweit gut.

Uns ist aufgefallen, dass beim Setzen von Kategorien über UUIDs in der Spalte „categories“ die improtierten Kategorien denen in der Datenbank zugefügt werden.

Bei „properties“ scheint es genau so zu sein (?)

Wie kann man bei solchen Spalten einstellen, dass die Informationen (properties oder categories) die in der Datenbank schon vorhanden sind, kpl. überschrieben werden? Gibt es sowas wie einen REPLACE Modus - vielleicht sogar auf Spaltenebene oder ist da Wunschdenken?

Viele Güße,
Alex

Ich befürchte fast, dass das nicht out-of-the-box geht :frowning: Belehrt mich bitte gerne eines besseren.

Wenn man sich den Code anschaut, wird da ein simples upsert verwendet

Vermutlich müsste man in dem ImportExportBeforeImportRecordEvent das löschen selbst behandeln.
In etwa so: Replacing associated data - Shopware Developer

Ich glaube das ist besser auf StackOverflow aufhoben… Weiter hier:

Hallo @aleximi,

Verwendest Du den Ansatz von hier Revisions to How to replace (not add) properties during Import in Shopware 6? - Stack Overflow oder hast Du mittlerweile eine bessere Lösung?

Danke und VG

Wir verwenden immernoch den Ansatz von StackOverflow

Hi aleximi, wir haben auch das besage Problem und würden gerne den StackOverflow Ansatz anwenden. Wir sind leider technisch nciht so bewandert. Daher die Frage: Auf StackOverflow ist eine „public function“ aufgeführt. Wo / wie bringt man die zum Laufen? D.h. wo muss ich die ggf. einfügen? In die ImportExport.php? In welche Zeile?

Danke!

Hallo Schwob2,

also wir haben aus dem Ansatz auf StackOverflow das in Plugin eingebaut. Das macht allerdings noch andere Dinge, d.h. es ist so nicht direkt wiederverwendbar.

Wie man ein Plugin erstellt, ist z.B. hier beschrieben: Plugin Base Guide - Shopware Developer
(funktioniert nur mit Self Hosted, nicht mit Cloud)

Ich habe auch mal kurz geschaut, ob das mit dem bald veröffentlichten Shopware 6.5 direkt funktioniert, der Code ist hier: platform/ImportExport.php at 6.5.0.0 · shopware/platform · GitHub

Man hat jetzt (auch schon vor 6.5) die Wahl ob man Produkte erzeugen oder Updaten will oder beides. Evtl. hilft eine geschickte Kombination davon bereits das Problem jetzt ohne Programmierung zu lösen - hab ihr das schon ausprobiert?

Viele Grüße,
Alex

Hi Alex, Danke für die Antwort. Mit dem Updaten und Erzeugen haben wir experimentiert. Natürlich könnte ich alle Artikel löschen und wieder neu (korrekt) anlegen. Das Problem ist, dass dann alle gemerkten Artikel aus den Wunschlisten meiner Kunden weg sind. Wenn ich Update, dann werden Properties leider ergänzt und nicht überschrieben. Also damit komme ich nicht ans Ziel, außer ich übersehe etwas.

Ich hab mir auch den 6.5 Code angesehen und konnte bezüglich Properties keine Verbesserung finden. Schade.