# Bei Plugin-Installation Artikel per API anlegen

**URL:** <https://forum.shopware.com/t/bei-plugin-installation-artikel-per-api-anlegen/96030>\
**Category:** Programmierung\
**Created:** [31. August 2022 um 08:09 UTC](https://forum.shopware.com/t/bei-plugin-installation-artikel-per-api-anlegen/96030 "2022-08-31T08:09:34Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![dateifabrk](https://avatars.discourse-cdn.com/v4/letter/d/da6949/32.png) [@dateifabrk](https://forum.shopware.com/u/dateifabrk)\
**Post date:** [31. August 2022 um 08:09 UTC](https://forum.shopware.com/t/bei-plugin-installation-artikel-per-api-anlegen/96030/1 "2022-08-31T08:09:34Z")

</div>

Hallo,

ich versuche, bei der Installation eines Plugins einen (später mehrere) Artikel per API anzulegen. Mein bisheriger Code, der insoweit funktioniert, daß der Artikel angelegt wird, sich die Installation im Backend aber aufhängt und bei der Installation per bin/console der Fehler lautet:

```auto
Entity has to be managed or scheduled for removal for single computation Shopware\Models\Plugin\Plugin@3257

```

Der bisherige Code:

```auto
    public function install(InstallContext $context)
    {
            $test = \Shopware\Components\Api\Manager::getResource('Article');
            $params = array(
                'name' => 'MeinArtikelname',
                'active' => true,
                'tax' => '19',
                'supplier' => 'MeinHersteller',
                'categories' => [
                    'id' => 2169
                ],                        
                'mainDetail' => [
                    'number' => 'MeineNumber',
                    'active' => true,
                    'prices' => [
                        [
                        'customerGroupKey' => 'EK',
                        'price'=> 999.88
                        ]
                    ]                            
                ]
            )
            ;
            $test->create($params);
    }

```

In [diesem Forumsbeitrag](https://forum.shopware.com/t/artikel-und-kategorie-anlegen-programmatisch/59166) hat es mit der getResource()-Methode wohl noch funktioniert.

Ich konnte sehen, daß _\Shopware\Components\Api\Manager::getResource(‚Article‘);_ nicht mehr verwendet werden soll (@deprecated with 5.6, will be removed with 5.8. Inject the resource instead). Somit würde ich gern den aktuellen Weg für Version 5.7.14 benutzen, weiß aber nur, daß dazu _\Shopware\Components\Api\Resource\Article_ verwendet werden müsste. Wie kann ich denn diese in der install-Methode implementieren? Oder geht das nur über (das dekorieren eines) Service? Wie muss dieser dann aussehen?

Danke für eure Denkanstösse!

---

<div class="post-metadata">

**Author:** ![dateifabrk](https://avatars.discourse-cdn.com/v4/letter/d/da6949/32.png) [@dateifabrk](https://forum.shopware.com/u/dateifabrk)\
**Post date:** [31. August 2022 um 09:04 UTC](https://forum.shopware.com/t/bei-plugin-installation-artikel-per-api-anlegen/96030/2 "2022-08-31T09:04:19Z")

</div>

Ich habe in der Zwischenzeit selbst herausgefunden, wie ich den ArtikelService benutzen kann. Der Fehler lautet aber per bin/console weiterhin

```auto
Entity has to be managed or scheduled for removal for single computation Shopware\Models\Plugin\Plugin@3231

```

Nur die Zahl am Ende ist anders.

Der angepasste Code lautet jetzt:

```auto
    public function install(InstallContext $context)
    {

            $container = Shopware()->Container();
            $articleApi = $container->get('shopware.api.article');

            $params = array(
                'name' => 'MeinArtikelname',
                'active' => true,
                'tax' => '19',
                'supplier' => 'MeinHersteller',
                'categories' => [
                    'id' => 2169
                ],                        
                'mainDetail' => [
                    'number' => 'MeineNumber',
                    'active' => true,
                    'prices' => [
                        [
                        'customerGroupKey' => 'EK',
                        'price'=> 999.88
                        ]
                    ]                            
                ]
            )
            ;
            $articleApi->create($params);

    }

```

Da der Artikel angelegt wird gibt es wohl eher ein Problem bei der Install-Methode, vermute ich.  
Aber welches?

---

<div class="post-metadata">

**Author:** ![dateifabrk](https://avatars.discourse-cdn.com/v4/letter/d/da6949/32.png) [@dateifabrk](https://forum.shopware.com/u/dateifabrk)\
**Post date:** [31. August 2022 um 10:20 UTC](https://forum.shopware.com/t/bei-plugin-installation-artikel-per-api-anlegen/96030/3 "2022-08-31T10:20:39Z")

</div>

Zusätzlich zu der Fehlermeldung gibt es den Hinweis auf die Zeile 546 in _UnitOfWork.php_ in _vendor/doctrine/orm/lib/Doctrine/ORM/_. Dort steht

```auto
    private function computeSingleEntityChangeSet($entity): void
    {
        $state = $this->getEntityState($entity);

        if ($state !== self::STATE_MANAGED && $state !== self::STATE_REMOVED) {
            throw new InvalidArgumentException('Entity has to be managed or scheduled for removal for single computation ' . self::objToStr($entity));
        }
...

```

Der Status der Entity darf also **NICHT** _STATE\_MANAGED_ und **NICHT** \*STATE\_REMOVED" sein…?
