# keepUserData bei Reinstall

**URL:** <https://forum.shopware.com/t/keepuserdata-bei-reinstall/52639>\
**Category:** Programmierung\
**Created:** [27. April 2018 um 09:41 UTC](https://forum.shopware.com/t/keepuserdata-bei-reinstall/52639 "2018-04-27T09:41:55Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![langnickel](https://avatars.discourse-cdn.com/v4/letter/l/3ec8ea/32.png) [@langnickel](https://forum.shopware.com/u/langnickel)\
**Post date:** [27. April 2018 um 09:41 UTC](https://forum.shopware.com/t/keepuserdata-bei-reinstall/52639/1 "2018-04-27T09:41:55Z")

</div>

Mhh, irgendwie funktioniert bei mir keepUserData nicht wenn ich per Backend “Neu Installieren” mach. Er löscht alle Daten die in meinen Custom-Models sind.

```
    public function uninstall(UninstallContext $context) {
        /* @var EntityManager $em */
        $em = $this->container->get('models');
        $tool = new SchemaTool($em);
        $classMeta = $this->_getDoctrineSchema();
        try {
            if ($context->keepUserData() == false)
                $tool->dropSchema($classMeta);
        } catch (\Exception $ex) {

        }
    }

```

Hab ich eventuell ne Einstellung irgendwo vergessen? Bei “Neu Installieren” fragt er auch garnicht ob ich die Nutzerdaten behalten will.

---

<div class="post-metadata">

**Author:** ![langnickel](https://avatars.discourse-cdn.com/v4/letter/l/3ec8ea/32.png) [@langnickel](https://forum.shopware.com/u/langnickel)\
**Post date:** [27. April 2018 um 09:45 UTC](https://forum.shopware.com/t/keepuserdata-bei-reinstall/52639/2 "2018-04-27T09:45:53Z")

</div>

Ok, mein Fehler. Hatte in der Install nen dropSchema drin. Wenn ich das dropSchema aber rausnehme kann ich das Plugin nicht neuinstallieren weil sich das&nbsp;SchemaTool beschwert dass es die Tabelle (zu Recht) schon gibt. Jemand nen Beispiel mit Custom Models, reinstall und keepUserData?

---

<div class="post-metadata">

**Author:** ![langnickel](https://avatars.discourse-cdn.com/v4/letter/l/3ec8ea/32.png) [@langnickel](https://forum.shopware.com/u/langnickel)\
**Post date:** [27. April 2018 um 10:07 UTC](https://forum.shopware.com/t/keepuserdata-bei-reinstall/52639/3 "2018-04-27T10:07:20Z")

</div>

Ok, so scheint es zu gehen (unter Vorbehalt)

```
    public function install(InstallContext $context) {
        /* @var EntityManager $em */
        $em = $this->container->get('models');
        $tool = new SchemaTool($em);
        $classMeta = $this->_getDoctrineSchema();
        
        
        /** @var MySqlSchemaManager $schemaManager */
        $schemaManager = Shopware()->Container()->get('models')->getConnection()->getSchemaManager();
        foreach($classMeta as $class) {
            if (!$schemaManager->tablesExist($class->getTableName())) {
                $tool->createSchema([$class]);
            }else{
                $tool->updateSchema([$class], true);
            }
        }
    }

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![ahmadsaad](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@ahmadsaad](https://forum.shopware.com/u/ahmadsaad)\
**Post date:** [27. April 2018 um 11:00 UTC](https://forum.shopware.com/t/keepuserdata-bei-reinstall/52639/4 "2018-04-27T11:00:16Z")

</div>

Hallo @langnickel‍,

Sie können einfach vergessen&nbsp;createSchema und benutzen nur&nbsp;updateSchema es werde create die Table wenn sie ist nicht da und update sie ob gibt etwas zu update.

also :

```
public function install(InstallContext $context) {
        /* @var EntityManager $em */
        $em = $this->container->get('models');
        $tool = new SchemaTool($em);
        $classMeta = $this->_getDoctrineSchema();
        
        
        /** @var MySqlSchemaManager $schemaManager */
        $schemaManager = Shopware()->Container()->get('models')->getConnection()->getSchemaManager();
        foreach($classMeta as $class) {
            $tool->updateSchema([$class], true);
        }
    }

```

VG,

Tel.: +49 755&nbsp;- 183 990 00 | Web:&nbsp;[http://enbit.de/](http://enbit.de/)

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [27. April 2018 um 13:14 UTC](https://forum.shopware.com/t/keepuserdata-bei-reinstall/52639/5 "2018-04-27T13:14:20Z")

</div>

Bitte darauf achten, dass ihr bei der Methode “updateSchema” den zweiten Parameter auf “true” setzt!

Viele Grüße aus Schöppingen

![cool](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/86c57fbace799dd4eb1f1b8a2d3bdc1733f0aea1.png "cool")&nbsp;Michael Telgmann
