# Produkt samt Attribute und Attributwerte programmatisch neu erstellen

**URL:** https://forum.shopware.com/t/produkt-samt-attribute-und-attributwerte-programmatisch-neu-erstellen/104446
**Category:** Shopware 6 (German)
**Tags:** programming
**Created:** [3. Juli 2024 um 09:11 UTC](https://forum.shopware.com/t/produkt-samt-attribute-und-attributwerte-programmatisch-neu-erstellen/104446 "2024-07-03T09:11:47Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)
#### Post date: [3. Juli 2024 um 09:11 UTC](https://forum.shopware.com/t/produkt-samt-attribute-und-attributwerte-programmatisch-neu-erstellen/104446/1 "2024-07-03T09:11:47Z")

</div>

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

```auto
          $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);

```

---

<div class="post-metadata">

### Author: ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)
#### Post date: [3. Juli 2024 um 09:29 UTC](https://forum.shopware.com/t/produkt-samt-attribute-und-attributwerte-programmatisch-neu-erstellen/104446/2 "2024-07-03T09:29:12Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)
#### Post date: [3. Juli 2024 um 09:31 UTC](https://forum.shopware.com/t/produkt-samt-attribute-und-attributwerte-programmatisch-neu-erstellen/104446/3 "2024-07-03T09:31:54Z")

</div>

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?

---

<div class="post-metadata">

### Author: ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)
#### Post date: [3. Juli 2024 um 09:39 UTC](https://forum.shopware.com/t/produkt-samt-attribute-und-attributwerte-programmatisch-neu-erstellen/104446/4 "2024-07-03T09:39:30Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)
#### Post date: [3. Juli 2024 um 09:43 UTC](https://forum.shopware.com/t/produkt-samt-attribute-und-attributwerte-programmatisch-neu-erstellen/104446/5 "2024-07-03T09:43:27Z")

</div>

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…

---

<div class="post-metadata">

### Author: ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)
#### Post date: [3. Juli 2024 um 09:49 UTC](https://forum.shopware.com/t/produkt-samt-attribute-und-attributwerte-programmatisch-neu-erstellen/104446/6 "2024-07-03T09:49:53Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)
#### Post date: [3. Juli 2024 um 10:11 UTC](https://forum.shopware.com/t/produkt-samt-attribute-und-attributwerte-programmatisch-neu-erstellen/104446/8 "2024-07-03T10:11:02Z")

</div>

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.

> **[Create a new Property Group Option resources. | Admin API](https://shopware.stoplight.io/docs/admin-api/5459ab6392f41-create-a-new-property-group-option-resources)**
>
> Available since: 6.0.0.0 Powered by Stoplight.
