# \[REST API\] Kategorien erstellen

**URL:** <https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [14. November 2012 um 13:39 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827 "2012-11-14T13:39:55Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [14. November 2012 um 13:39 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827/1 "2012-11-14T13:39:55Z")

</div>

Hallo, ich tue mich verdammt schwer mit Kategorien-Erstellung über die API. Folgendes konnte ich finden: ` // Anlegen einer Kategorie $createCategory = array( 'parentId' =\> 3, 'name' =\> 'Testkategorie' ); $categorie = $client-\>post('categories', $createCategory); ` Dies funktioniert soweit. Führe ich dies aber 2x aus, so habe ich 2 Kategorien mit dem gleichen Namen. Was ja so keinen Sinn macht. Mit der alten API wurde bemerkt, dass die Kategorie schon besteht. Daher gab es keine doppelten Kategorien. Wenn ich jetzt mal einen typisch alten Artikelexport von mir als vorlag nimm, da sind ja pro Artikeldatzesatz in einer externen CSV oder XML die Kategorien bzw. der Pfad hinterlegt. z.B. Produkte, Siemens, Telefone Dies würde ich dann so machen (natürlich in einer Schleife): ` // Anlegen einer Kategorie $createCategory = array( 'parentId' =\> 3, 'name' =\> 'Produkte' ); $categorie = $client-\>post('categories', $createCategory); $createCategory = array( 'parentId' =\> $categorie[data][id], 'name' =\> 'Siemens' ); $categorie = $client-\>post('categories', $createCategory); $createCategory = array( 'parentId' =\> $categorie[data][id], 'name' =\> 'Telefone' ); $categorie = $client-\>post('categories', $createCategory); ` Beim ersten Aufruf klappt es. Beim zweiten habe ich alles doppelt usw. Wie prüfe ich nun ob die Kategorie schon angelegt ist? Besser wäre, wenn einfach keine doppelten Datensätze angelegt werden! Ebenso, wie fülle ich Arittbutfelder der Kategorie? Ebenso, gibt es noch pro Kategorie diverse Einstellungen? Mit der alten API habe ich das so gemacht. Bei jedem Artikel. Wenn die Kategoriestruktur schon vorhanden war, wurden aber keine doppelten Datensätze erzeugt: ` $category\_data = array("category\_1"=\>$cat1name, "category\_2"=\>$cat2name, "category\_3"=\>$cat3name, "category\_4"=\>$cat4name, "category\_5"=\>$cat5name); $currentcategory = $maincategory; for ($i=1;!empty($category\_data["category\_$i"]);$i++) { $currentcategory = $api-\>sCategory( array( "description"=\>$category\_data["category\_$i"], "parent"=\>$currentcategory ) ); } `

---

<div class="post-metadata">

**Author:** ![DanielNogel](https://avatars.discourse-cdn.com/v4/letter/d/96bed5/32.png) [@DanielNogel](https://forum.shopware.com/u/DanielNogel)\
**Post date:** [14. November 2012 um 15:40 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827/2 "2012-11-14T15:40:01Z")

</div>

Hallo ottscho, von der Überlegung her finde ich das erstmal absolut nachvollziehbar, allerdings ist das im REST-Context nicht ganz so einfach, weil wir eigentlich eine sehr saubere Unterscheidung von POST und PUT haben. Falls du die ID kennst, würde ich erstmal einen PUT fahren und im Fehlerfall halt die Kategorie mit POST erstellen. Ansonsten müsstest du mit GET und einem entsprechenden Filter die Kategorie anhand von Parent und Namen suchen. Zu deiner anderen Frage: Die verschiedenen Felder werden mit „fromArray“ gesetzt, d.h. vom Prinzip her kannst du alles setzen, was in \enginge\Shopware\Models\Category\Category.php einen Setter hat und jetzt nicht gerade irgendeine Relation ist (wie z.B. articles). Die Schreibeweise richtet sich dabei nach den dazugehörigen Eigenschaften, also bspw „metaDescription“. Besten Gruß, Daniel

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [14. November 2012 um 17:40 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827/3 "2012-11-14T17:40:23Z")

</div>

Hallo Daniel, danke für deine schnelle Antwort. In der Regel kenn ich ja die Kategorie ID nicht. Ich habe eine CSV Liste mit Artikel und wirren Kategoriebezeichnungen. Nun sollten diese Artikel mit den Kategorien angelget werden. Kann ich den nur anhand dem Kategorienamen und dem Parent herausfinden, ob es die Kategorie schon gibt?

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [14. November 2012 um 19:49 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827/4 "2012-11-14T19:49:38Z")

</div>

hast du mir bitte eine Beispiel =\> fromArray Bzgl. Kategorien steht in den Labs nicht viel Informationen. Danke

---

<div class="post-metadata">

**Author:** ![DanielNogel](https://avatars.discourse-cdn.com/v4/letter/d/96bed5/32.png) [@DanielNogel](https://forum.shopware.com/u/DanielNogel)\
**Post date:** [15. November 2012 um 09:25 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827/5 "2012-11-15T09:25:33Z")

</div>

Hallo ottscho, ich weiß gar nicht, was du meinst, steht doch [alles im Wiki](http://wiki.shopware.de/Rest-API-Tutorial%5C_detail%5C_861.html#Anlegen%5C_von%5C_Kategorien%5C_mit%5C_Attributen%5C_und%5C_weiteren%5C_Feldern) \*husträuspergeradenachgepflegt\* 🙂 Ein Beispiel zum Filtern findest du im Wiki bei der Artikel-Resource: [http://wiki.shopware.de/Rest-API-Tutori … \_Beispiele](http://wiki.shopware.de/Rest-API-Tutorial%5C_detail%5C_861.html#Weitere%5C_Beispiele) Besten Gruß, Daniel

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [15. November 2012 um 09:45 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827/6 "2012-11-15T09:45:08Z")

</div>

Danke 🙂 Habt ihr schön heute Morgen editiert :thumbup: :shopware: Jetzt komme ich zurecht.

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [15. November 2012 um 09:49 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827/7 "2012-11-15T09:49:19Z")

</div>

[quote=“Daniel Nögel”] Ein Beispiel zum Filtern findest du im Wiki bei der Artikel-Resource: [http://wiki.shopware.de/Rest-API-Tutori … \_Beispiele](http://wiki.shopware.de/Rest-API-Tutorial%5C_detail%5C_861.html#Weitere%5C_Beispiele) [/quote] Bin ich blind? Wo ist da ein Beispiel zum filtern?

---

<div class="post-metadata">

**Author:** ![DanielNogel](https://avatars.discourse-cdn.com/v4/letter/d/96bed5/32.png) [@DanielNogel](https://forum.shopware.com/u/DanielNogel)\
**Post date:** [15. November 2012 um 10:39 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827/8 "2012-11-15T10:39:56Z")

</div>

Nein, bist du nicht, habe den falschen Link gesetzt :oops:: [http://wiki.shopware.de/Rest-API-Tutori … eispiele\_2](http://wiki.shopware.de/Rest-API-Tutorial%5C_detail%5C_861.html#Weitere%5C_Beispiele%5C_2) Also unter “weitere Beispiele” bei den Bestellungen. Das ist analog auch bei den Kategorien (und allen anderen Resourcen) möglich. Besten Gruß, Daniel

---

<div class="post-metadata">

**Author:** ![marioiram](https://avatars.discourse-cdn.com/v4/letter/m/ecae2f/32.png) [@marioiram](https://forum.shopware.com/u/marioiram)\
**Post date:** [26. Juli 2016 um 10:03 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827/9 "2016-07-26T10:03:44Z")

</div>

hi,

&nbsp;

ich benutze restapi client die ihr zuverfügung gestelt haben.

allerding bei erstellen von categories kriege ich folgende fehler meldung.:

## No Success

This resource has no support for batch operations.

hier ist eine kleine codse abschnit:

&nbsp;

private function InsertNewCategoriesByShopware($newCategories){

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;foreach($newCategories as $categorie){

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$newCategorie=array();

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$newCategorie[„id“] = $categorie-\>id;

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$newCategorie[„name“] = $categorie-\>name;

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$newCategorie[„parentId“] = $this-\>rootParentIdFromShopware;

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$result=$this-\>InsertNewCategorieByShopware($newCategorie);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;print\_r($result);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;}

private function InsertNewCategorieByShopware($categorie){

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$shopwareRestApiClient = new RestApiClient();

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return $shopwareRestApiClient-\>put(‚categories/‘,$categorie);

&nbsp;&nbsp; &nbsp;}

---

<div class="post-metadata">

**Author:** ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)\
**Post date:** [26. Juli 2016 um 10:19 UTC](https://forum.shopware.com/t/rest-api-kategorien-erstellen/9827/10 "2016-07-26T10:19:19Z")

</div>

@marioiram‍ Schau dir doch einmal das Shopware SDK an:&nbsp;[GitHub - LeadCommerceDE/shopware-sdk: A PHP SDK for the Shopware 5 REST API](https://github.com/LeadCommerceDE/shopware-sdk)
