# Shopware API: Import von Bildern + VariantenMapping Rules

**URL:** <https://forum.shopware.com/t/shopware-api-import-von-bildern-variantenmapping-rules/14172>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [3. Juli 2013 um 17:46 UTC](https://forum.shopware.com/t/shopware-api-import-von-bildern-variantenmapping-rules/14172 "2013-07-03T17:46:51Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mmmichael](https://avatars.discourse-cdn.com/v4/letter/m/ac91a4/32.png) [@mmmichael](https://forum.shopware.com/u/mmmichael)\
**Post date:** [3. Juli 2013 um 17:46 UTC](https://forum.shopware.com/t/shopware-api-import-von-bildern-variantenmapping-rules/14172/1 "2013-07-03T17:46:51Z")

</div>

Hallo, wie man Bilder importiert ist klar, nur kann man auch irgendwie direkt die Mapping Rules für die Varianten setzen kann? Gruß, Michael

---

<div class="post-metadata">

**Author:** ![mmmichael](https://avatars.discourse-cdn.com/v4/letter/m/ac91a4/32.png) [@mmmichael](https://forum.shopware.com/u/mmmichael)\
**Post date:** [4. August 2013 um 17:28 UTC](https://forum.shopware.com/t/shopware-api-import-von-bildern-variantenmapping-rules/14172/2 "2013-08-04T17:28:18Z")

</div>

Muss hier noch einmal \*pushen\*. Hab in den prepareImageAssociatedData API Funktion keine Funktionalität dazu gefunden und mache das jetzt “handisch” durch Einträge in s\_articles\_img. Würde aber natürlich gerne einen offiziellen Weg gehen.

---

<div class="post-metadata">

**Author:** ![passon](https://avatars.discourse-cdn.com/v4/letter/p/8e8cbc/32.png) [@passon](https://forum.shopware.com/u/passon)\
**Post date:** [5. August 2013 um 16:34 UTC](https://forum.shopware.com/t/shopware-api-import-von-bildern-variantenmapping-rules/14172/3 "2013-08-05T16:34:38Z")

</div>

Hi Michael, wenn bei Import den Bildern ein mapping mitgegeben wird, wird zumindestens schon mal ein mapping in der Tabelle s\_article\_img\_mappings angelegt. Nur habe ich noch nicht rausgefunden, welche Struktur die rules haben müssen, sodass diese auch angelegt werden. ` [images] =\> Array ( [0] =\> Array ( [articleID] =\> 100 [link] =\> link [mappings] =\> Array ( [0] =\> Array ( ... hier müsste jetzt die richtige array struktur für eine mapping rule oder aber eine configurator option rein ... ) ) ) ) ` Vielleicht könnte sich SW dies bezüglich bitte nochmal zu Wort melden.

---

<div class="post-metadata">

**Author:** ![kadis](https://avatars.discourse-cdn.com/v4/letter/k/c57346/32.png) [@kadis](https://forum.shopware.com/u/kadis)\
**Post date:** [9. August 2013 um 13:23 UTC](https://forum.shopware.com/t/shopware-api-import-von-bildern-variantenmapping-rules/14172/4 "2013-08-09T13:23:43Z")

</div>

push. Das würde mich auch brennend interessieren. 😉 Da dies sonst Hardcore in die Datenbank geschrieben werden müsste und auch wieder entfernt, wenn das Bild, Varianten oder Artikel nicht mehr existiert.

---

<div class="post-metadata">

**Author:** ![kuomba](https://avatars.discourse-cdn.com/v4/letter/k/e95f7d/32.png) [@kuomba](https://forum.shopware.com/u/kuomba)\
**Post date:** [12. August 2013 um 17:33 UTC](https://forum.shopware.com/t/shopware-api-import-von-bildern-variantenmapping-rules/14172/5 "2013-08-12T17:33:34Z")

</div>

Ich hänge auch an dieser Stellen. Nachdem ich die Models und Co studiert habe kam ich leider auch nicht weiter. Eine Möglichkeit kam mir dann in dieser Form ` $mappings = array( array( 'rules' =\> array( 'option' =\> array( 'id' =\> 34, 'name' =\> 'L' , ) ) ) ); ` Jedoch wird hier der Fehler gewurfen. Integrity constraint violation: 1048 Column ‘option\_id’ cannot be null Mir erschließt sich jedoch keine Lösung um diese option\_id zu setzen über die API selbst.

---

<div class="post-metadata">

**Author:** ![mmmichael](https://avatars.discourse-cdn.com/v4/letter/m/ac91a4/32.png) [@mmmichael](https://forum.shopware.com/u/mmmichael)\
**Post date:** [18. August 2013 um 19:35 UTC](https://forum.shopware.com/t/shopware-api-import-von-bildern-variantenmapping-rules/14172/6 "2013-08-18T19:35:04Z")

</div>

Hatte das ganze per Hand scheinbar hinbekommen, habe jetzt aber doch Probleme beim Varianten-Mapping, weil einfach irgendwas fehlt. Suche daher auch weiterhin die saubere Lösung!

---

<div class="post-metadata">

**Author:** ![philippk](https://avatars.discourse-cdn.com/v4/letter/p/b9e5f3/32.png) [@philippk](https://forum.shopware.com/u/philippk)\
**Post date:** [23. August 2013 um 18:34 UTC](https://forum.shopware.com/t/shopware-api-import-von-bildern-variantenmapping-rules/14172/7 "2013-08-23T18:34:10Z")

</div>

Moin, hatte auch das Problem und derzeit scheint es mit der API wohl auch nicht direkt möglich zu sein. Hab mir folgenden Code aus dem CSV-Importscript kopiert. Wenn der nach dem Befüllen der Mapping-Tabellen in die DB ausgeführt wird läuft die Zuordnung in Frontend und Backend. ` $manager = Shopware()-\>Models(); $repos = $manager-\>getRepository('Shopware\Models\Article\Article'); $builder = Shopware()-\>Models()-\>createQueryBuilder(); $images = $builder-\>select(array('images', 'mappings', 'rules', 'option')) -\>from('Shopware\Models\Article\Image', 'images') -\>innerJoin('images.mappings', 'mappings') -\>leftJoin('mappings.rules', 'rules') -\>leftJoin('rules.option', 'option') -\>where('images.articleId = ?1') -\>andWhere('images.parentId IS NULL') -\>setParameter(1, $articleId) -\>getQuery(); $images = $images-\>execute(); /\*\* @var \Shopware\Models\Article\Image $image \*/ foreach ($images as $image) { $query = $repos-\>getArticleImageDataQuery($image-\>getId()); $imageData = $query-\>getOneOrNullResult(\Doctrine\ORM\AbstractQuery::HYDRATE\_ARRAY); $repos-\>getDeleteImageChildrenQuery($image-\>getId())-\>execute(); foreach ($image-\>getMappings() as $mapping) { $options = array(); foreach ($mapping-\>getRules() as $rule) { $options[] = $rule-\>getOption(); } $imageData['path'] = null; $imageData['parent'] = $image; $details = $repos-\>getDetailsForOptionIdsQuery($articleId, $options)-\>getResult(); foreach ($details as $detail) { $newImage = new \Shopware\Models\Article\Image(); $newImage-\>fromArray($imageData); $newImage-\>setArticleDetail($detail); Shopware()-\>Models()-\>persist($newImage); Shopware()-\>Models()-\>flush(); } } }`
