wirft mir leider ebenfalls diesen Fehler - ich dachte eigentlich, dass upsert nur ein update durchführt, sollten diese Felder bereits existieren. Wie wird dies korrekt umgesetzt?
ich würde die Felder bei keepUserData auf alle Fälle behalten.
Wenn du die “create”-Methode benutzt, dann würde ich diese in einen try-catch Block setzten und bei der “Existiert schon”-Exception einfach nichts tun.
Wenn du es mit upsert machst, musst du eine UUID angeben. Nur dann wird deine Entity angelegt, falls sie nicht vorhanden ist und ansonsten geupdated. Aus meiner Sicht, kannst du die UUID einfach hardcoded hinterlegen. In die UUID fließt unter anderem Zufallszahlen ein. Das es dieselbe UUID schon gibt ist sehr unwahrscheinlich https://en.wikipedia.org/wiki/Universally_unique_identifier#Collisions.
@simkli vielen Dank für die Antwort. Prinzipiell würde es also ausreichen, einen try-catch-Block um den insert-Befehl zu legen.
UUIDs lege ich tatsächlich nicht an. Was passiert technisch denn dabei, wenn keine UUID hinterlegt wurde? Dann gibt es teilweise custom fields mit ID und welche ohne? Verstehe ich noch nicht ganz.
Was wäre die “bessere” Variante? try-catch ODER UUIDs hardcoded hinterlegen?
Was passiert technisch denn dabei, wenn keine UUID hinterlegt wurde? Dann gibt es teilweise custom fields mit ID und welche ohne?
Dann vergibt Shopware eine neue.
Was wäre die „bessere“ Variante? try-catch ODER UUIDs hardcoded hinterlegen?
Ich würde sagen es macht keinen großen Unterschied. Wenn du die Customfelder später löschen oder ändern willst, musst du dir immer erst die neu generierte UUID holen (z.B. mit einem Filter auf name=DeinName).
Aber eigentlich kann man beides machen, würde ich sagen. Vielleicht meldet sich ja noch jemand, der einen Nachteil von einer der Methoden kennt.