2012-04-12 23 views
2

Was ich herausfinden möchte ist, wie man neue Felder zu einer Tabelle hinzufügt, mit Symfony2 mit Doctrine2.Tabelle mit der Symfony2 Doctrine2-Konsole ändern/Funktion generieren?

verwendete ich dies zunächst das Entity zu erstellen:

php app/console doctrine:generate:entity --entity="MyMainBundle:ImagesTable" --fields="title:string(100) file:string(100)" 

Und ich habe dies die Tabellen in der Datenbank erstellen/aktualisieren:

php app/console doctrine:schema:update --force 

Wenn ich nun auf neue Felder hinzufügen wollte die ImagesTable Einheit, gibt es eine einfache Möglichkeit, es mit der console zu tun, oder muss ich die Entität manuell bearbeiten. Ich benutze gerade eine Entität als Beispiel, aber in Wirklichkeit gibt es viele Entitäten, die ich ändern würde; Also muss es einen einfacheren Weg geben.

Ich habe sie manuell bearbeitet, um Beziehungen zu erstellen. Wenn es also einen einfacheren Weg gibt, wäre das auch großartig.

Ich erinnere mich, dass dies mit Symfony1.4 viel einfacher war - ich musste nur die Datenbank/Tabellen mit phpMyAdmin erstellen, und Symfony konnte die Modelle ohne Probleme erzeugen.

Ich hoffe wirklich, dass mir hier etwas fehlt, weil das nicht funktioniert, wenn ich jede Entität für jede Änderung manuell bearbeiten muss.

Antwort

1

Doctrine Generator Befehle sollen dem Entwickler helfen, eine Idee schnell zu prototypieren. Sie produzieren im Allgemeinen keinen produktionsbereiten Code, und der Code muss überprüft werden, um zu sehen, ob er enthält, was Sie wollen.

Sie können immer noch Ihr Modell in phpmyadmin erstellen und verwenden Sie Doctrine reverse engineering tools, aber es produziert auch nicht produktionsbereiten Code, nur für die Verwendung in Prototyping.

Das Erstellen von Datenbanken/Tabellen im Voraus funktioniert nicht wirklich gut mit Doctrine2, da die zugrundeliegende Beziehung zwischen Tabellen möglicherweise nicht die gleiche wie die Beziehung zwischen Objekten Ihres Modells ist. Der ganze Sinn von ORM besteht darin, in Klassen zu denken und Doctrine den Rest der Arbeit für dich erledigen zu lassen.

Doctrine ist nicht dazu gedacht, Ihre Entitäten für Sie zu schreiben, es gibt Ihnen Werkzeuge zum Erstellen Ihres Datenmodells, mit dem Sie Ihr Modell in PHP codieren.

Wenn Sie nicht möchten, dass Ihre Entitäten von Hand codiert werden (was alle Entwickler, die Doctrine verwenden, tun), sollten Sie einen Blick auf werfen, ein Zero-Config-ORM-Framework für PHP. Es erstellt die Datenbanktabellen, Spalten und Indizes im laufenden Betrieb, abhängig vom verwendeten Datenmodell.

+0

Ich sage nicht, dass ich will, dass es absolut alles erzeugt, aber ich erwarte, dass es die Grundlagen (Setter und Getters) erzeugt. Ich sollte nicht manuell ein Set Setter und Getters für wie 15 verschiedene Felder setzen müssen (wenn ich später die Tabelle/Entity ändern möchte). Ich denke du hast meinen Punkt hier verpasst ... – xil3

+0

Es gibt ein [generate entities] (http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/tools.html) # entity-generation) -Befehl für die Konsole, aber es generiert nur die grundlegenden Setter und Getter. Abhängig davon, wie viel Logik Sie in Ihre Entitäten einbeziehen möchten, ist dies möglicherweise nicht die Lösung. Und es erzeugt keine korrekten Entitäten für die Vererbung. –

+0

Ja, ich weiß, aber meine ursprüngliche Frage wurde gefragt, ob es einen Befehl zum Hinzufügen von Feldern zu einer bestehenden Entität gab. Ansonsten muss ich jedes Feld manuell hinzufügen (Eigenschaft & Getter/Setter). Oder, ich denke, ich könnte die Entität löschen und neu generieren, aber ich sehe das nicht als optimale Lösung. – xil3

Verwandte Themen