Produkt samt Attribute und Attributwerte programmatisch neu erstellen

Hallo Leute,
folgender Code erstellt per DAL neue Produkte. Meinen Intention ist es jetzt, in einem Rutsch auch Attribute und Attributwerte neu zu erstellen. Ist das möglich, sofern die Attribute noch nicht existieren? Ich stelle mir das ähnlich vor wie über die Erstellung des assoziativen Arrays price und tax, kenne aber die genaue Notation nicht

          $this->productRepository->create(
                    [
                        [
                            'id' => Uuid::randomHex(), 'name' => $arRecords2BeCreated[$i]['description'],'stock' => intval($arRecords2BeCreated[$i]['stock']),
                            'tax' => [
                                'name' => 'individualTaxRate', 'taxRate' => 15
                            ],
                            'createdAt' => $createdAt, 'categories' => $arCategories,
                            'price' => [
                                [
                                    'currencyId' => Defaults::CURRENCY, 'gross' => floatval($arRecords2BeCreated[$i]['price']), 'net' => floatval($arRecords2BeCreated[$i]['price']), 'linked' => true
                                ]
                            ], 'productNumber' => $arRecords2BeCreated[$i]['productNumber'],
                            'visibilities' => [
                                [
                                    'salesChannelId' => $arMandatoryParameters[0], 'visibility' => ProductVisibilityDefinition::VISIBILITY_ALL
                                ]
                             ]
                        ]
                    ], $context);

Ja, aber nicht so.

Shopware lässt es zu, dass Eigenschaften mehrfach mit dem gleichen Namen existieren. Das heißt, Shopware legt diese jedes Mal neu an.

Du musst erst nach den Eigenschaften und Ausprägungen suchen, die UUIDs ermitteln und dann diese mit übergeben. Dann ist es möglich.

Was, wenn die Attributausprägungen noch gar nicht vorhanden sind. Dann kann ich doch auch nicht nach den Primärschlüsseln suchen. Wie erstelle ich per Code Attribute und Attributwerte, nach deren IDs ich dann suchen kann, wie von dir vorgeschlagen? Muss ich da andere Repositories injektieren? Falls ja, welche? Ich nehme mal an properties.group. Das Objekt tax kann ich doch auch innerhalb Produkte erstellen, warum also nicht auch properties?

Wenn du sicher bist, dass noch keine Eigenschaft/Ausprägung mit dem Namen existiert, dann kannst du natürlich so vorgehen.

Du kannst über das PropertyGroup und PropertyGroupOption Entity Repository danach suchen.

Da gibt es vorerst nichts zu suchen. Es gibt momentan überhaupt keine Attribute/Properties! Wie erstelle ich über DAL create() Einträge in den von dir erwähnten injektierten Repositories. Das ist nirgends dokumentiert…

Indem du ein entsprechendes Entity, mit allen required Attributen übergibst.

Da die PropertyGroupOption auf die PropertyGroup aufbauen, musst du vermutlich die UUID selbst festlegen. Müsste ich in der Dokumentation selbst noch einmal nachlesen. Verwende diese rekursive Methode nur selten.

Eine propertyGroupOption ist an eine propertyGroup gebunden. Wenn die propertyGroup noch nicht existiert, dann fehlt eine notwendige Beziehungen zwischen beiden Entities.

Wie DAL damit umgeht, kannst du ja selbst testen – ich weiß es nicht auswendig. Eventuell kannst du die propertyGroup in die propertyGroupOption packen. Aber wenn du mehrere hast… wird kompliziert.