API Produkt Eigenschaften Unique machen?

Hallo.
Ich importiere via API Eigenschaften.
Wenn ich diese anlege und ggf schon eine „Farbe“ Gruppe existiert, dann wird diese ignoriert und eine zweite „Farbe“ angelegt.
Ok, hier muss ich also vorher rausfinden, ob eine Eigenschaft mit diesem Namen bzw groupID existiert. Das gleiche dann bei den OptionIds.
Gibt es für die API ein „Zauberwort“ dass ich keine doppelten Eigenschaften anlege ohne es jedes mal vorher zu prüfen?
Danke und Gruss

Nein. Darum musst du dich selbst kümmern.

1 „Gefällt mir“

Moin,
was du versuchen kannst wäre das entsprechende dB Feld als unique zu setzen :thinking: Dann wirds wohl definitiv einen Fehler geben der geworfen wird in irgendeiner Weise. Würde aber wahrscheinlich eher dazu tendieren vorher nach der Eigenschaft zu suchen :sweat_smile:

Grüße
Matthias

1 „Gefällt mir“

Noch eine Ergänzung. Du kannst natürlich auch eine eigene Route schreiben und dir das gewünschte Verhalten selber bauen.

Grüße
Matthias

Könnte so aussehen: MD5(LOWER(Farbe:Weiß))

@Teddie wie meinst du das mit dem Hashen? Wo soll ich den Hash ablegen?

Wir haben einen self-made API Client für die Admin-API. Dort haben wir eine Methode „getOrCreateOption“. Also zuerst schauen wir nach (local gecached) ob die Option schon existiert, und wenn nicht, legen wir eine neue an.

Die Idee mit dem hash ist aber auch nicht verkehrt. Ihr könnt ja auch eigene UUIDs vorgeben und die könnt ihr ja aus den Werten bilden die angelegt werden sollen. Bin mir gerade nicht sicher wie die api reagiert wenn man direkt eine Id mitgibt, die es noch nicht gibt. Aber sollte ja theoretisch funktionieren.

Grüße
Matthias

Wenn man der API die ID, sowie den Namen einschließlich Gruppen-ID und Name übergibt wird nur angelegt, was fehlt. :smiling_face:

Wäre doch an sich kein Problem? Wenn’s den Datensatz nicht gibt wird er angelegt und ansonsten aktualisiert?

bei Problem ist immer, dass der Import für jeden Datensatz „ewig“ braucht, weil man die Daten zuerst lesen muss um zu prüfen ob die Daten schon vorhanden sind.
Lösungen gibt es sicher viele, entweder man baut sich hier einen eigenen Import (z.B. über ein Command) oder man nutzt eine MiddleWare.

Ursache ist hier die Nutzung der UUIDs als künstlicher PK. Ich glaube ich habe das hier schon 100mal gesagt, das ist kein dolles Design.

LG

Ich habe mir so eine Middleware gebaut.
Alle Shopware Eigenschaften in ein Array, Alle Lieferanten Eigenschaften in ein Array. Anschliessend vergleichen, Ids zuordnen falls vorhanden und dann alles in einer GUI ausgeben.
Aber dann kommt das erstellen und ergänzen von diesen Eigenschaften in Shopware und man braucht jedes mal diese ID.
Beim Produktimport wird doch auch blockiert wenn die productNumber schon gibt. Warum kann man das nicht bei Eigenschaften auch machen?

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.