Es geht um das Setzen von Kategorien zu einem Artikel. Wir machen das über ein externes System.
Hier speichern wir dann die Kategorien-Zuordnung und senden diese via API an Shopware.
Das „Problem“ ist das unter Replacing associated data - Shopware Developer beschriebene.
Da wir nicht wissen, ob der Artikel schon Kategorien hat (oder vom aktuellen Stand unabhängige) müsste man dann zuerst die alten Daten löschen und dann neu setzen. Am Ende summieren sich die Calls !
In SW5 gab es noch einen extra Parameter mit „replace“, der dann das ganze in der API gelöst hat. Vermutlich in SW6 „weg-optimiert“ oder ?
Wenn man das Ganze auf einen Sync-Call umbaut, wäre dann sichergestellt, dass die Operationen in der angegebenen Reihenfolge ablaufen:
- DELETE all categories for productId
- UPSERT categories
Tatsächlich braucht es ja 3 Calls. der Primary Key für product_categories ist zusammen gesetzt. Sprich ist einziges SQL statement ala „delete where product_id“ funktioniert eben nicht. Also erstmal den aktuellen Stand abrufen, dann ein Sync-Delete und schließlich das Update mit den neuen Kategorien …