Gibt es eine "addCategories" Funktion?

Hallo,

ein Artikel (articleID bekannt) soll einer Shop-Kateogorie hinzugefügt werden (categoryID bekannt). Gibt es dafür eine simple Funktion - sowas wie “addCategories”?

Hallo,

 

kommt darauf an, was du machen willst. Dir stehen zwei Möglichkeiten zur Verfügung: API und Doctrine.

Die Doctrine Variante (in Deinem Plugin):

$em = $this->container->get('models');
$articleRepo = $em->getRepository(Shopware\Models\Article\Article::class);
$article = $articleRepo->findOneBy(array('id' => 4711));
// die folgende Anweisung ist nötig, wenn Du selektierte Objekte wieder speichern willst (siehe Doctrine Doku):
$article->merge();
$categoryRepo = $em->getRepository(Shopware\Models\Category\Category::class);
$category = $categoryRepo->findOneBy(array('id' => 4711));
// auch hier muss gemergt werden, weil Du etwas an der Verbindungstabelle ändern willst:
$category->merge();

// die neue Kategorie an den Artikel anfügen:
$article->addCategory($category);

$em->persist($category);
$em->persist($article);
$em->flush();

Ungetestet, sollte so aber laufen. Ersetze einfach 4711 durch jeweils Deine bekannten IDs. n:m Beziehungen haben immer eine ArrayCollection, bei der es auch meistens eine add Methode gibt.

 

Für die Methode API bitte am besten die Doku dazu durchlesen: REST API - Examples using the article resource

 

 

MFG

 

derwunner

Falls du es über Doctrine machst müsstest du sehr wahrscheinlich den Kategorie-Baum neuaufbauen, da sonst die Kategorie Verknüpfungen nicht da sind.