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.
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 SchemaTool beschwert dass es die Tabelle (zu Recht) schon gibt. Jemand nen Beispiel mit Custom Models, reinstall und keepUserData?
Sie können einfach vergessen createSchema und benutzen nur 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);
}
}