Ich habe ein kleines Plugin mit einem eigenen Model erzeugt. Die ModelKlasse wird von ModelEntity abgeleitet und ich verwende Doctrine Annotations wie in den Shopware Beispielen aufgeführt. Möchte ich nun in meinem Controller ein neues Objekt anlegen und dieses in die Datenbank schreiben über: $testdata =new TestData01(); $testdata->setName(“entry2”); Shopware()->Models()->persist($testdata); Shopware()->Models()->flush(); Kommt nachfolgender Fehler: An exception occurred while executing ‘INSERT INTO joe_test_data01 (name) VALUES (?)’ with params [“entry2”]: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'shopware- Lege ich die Tabelle joe_test_data01 manuel mit phpmyadmin an funktionierts…aber eigentlich müsste doch doctrine dies automatisch machen?! Danke und Gruß
Die Tabelle können zwar erstellt werden, aber dafür muss man selbst sorgen. Etwa folgendes könnte man in der install Funktion verwenden, um aus dem eigenen Model die Tabelle zu erstellen: $em = Shopware()-\>Models(); $schemaTool = new \Doctrine\ORM\Tools\SchemaTool($em); try{ $schemaTool-\>createSchema( array( $em-\>getClassMetadata('Shopware\CustomModels\DEIN\MODEL\HIER'), ) ); } catch (\Doctrine\ORM\Tools\ToolsException $e){ // log }
Oder über die console.