Archiv der Kategorie: Symfony

Symfony und Doctrine: Entity- und Repository-Klassen nachträglich erstellen

Wer Symfony für ein bereits bestehendes Projekt nutzen will, steht vor dem Problem, dass es sehr mühsam (und erst recht fehleranfällig) sein kann, händisch die Entity- und Repository-Klassen nachträglich zu erstellen.

Um die Entity- und Repository-Klassen aus bestehenden Tabellen zu erzeugen, können Sie den folgenden Befehl verwenden:

php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity

Dieser Befehl wird die Entities aus den Tabellen Ihrer Datenbank im Annotation-Format im Verzeichnis app/src/Entity erzeugen.

Es kann durchaus der Fall sein, dass doctrine bestimmte Maßnahmen fordert. Ich musste zum Beispiel mehrmals nachträglich in meinen Tabellen (gerade in den unbedeutenden) Primärschlüssel erzeugen. Und der spezielle MySQL-Datentyp ENUM muss durch den allgemeineren Typ SET ersetzt werden. Aber diese Anpassungen sollten gefahrlos vorzunehmen sein.

Sie müssen dann die @ORM\Entity-Annotation in jeder Entity-Klasse ändern, um das entsprechende Repository anzugeben. Zum Beispiel:

@ORM\Entity (repositoryClass="App\Repository\UserRepository")

Sie können dann den folgenden Befehl verwenden, um die Entity-Klassen zu aktualisieren:

php bin/console make:entity --regenerate

Dann tauchen auch aufeinmal auch die getter- und setter-Methoden auf.

Beachten Sie, dass der Befehl doctrine:mapping:import von Doctrine im Jahr 2019 als veraltet markiert wurde und es keinen Ersatz dafür gibt. Stattdessen können Sie den Befehl make:entity vom Symfony Maker Bundle verwenden, um Ihnen bei der Erstellung des Codes Ihrer Doctrine-Entities zu helfen. Dieser Befehl erfordert jedoch eine manuelle Überwachung, da er keine Entities aus bestehenden Datenbanken erzeugt.