2017-05-12 4 views
0

Ich habe ein Symfony-Projekt, das mit mehreren Datenbanken verbunden ist. Allerdings habe ich nur ALTER Zugriff auf einen von ihnen.Halten Sie die Doktrin-Entität auf dem neuesten Stand mit der externen SQL-Datenbank

Im Moment, um meine Doktrin-Entitäten synchron mit der Datenbank zu halten, muss ich eine doctrine:schema:update --dump-sql machen dann das Gegenteil meiner Entität tun.

z.B. Wenn doctrine:schema:update --dump-sql gibt mir ALTER tableName DROP columnName Ich gehe auf die TableName-Entität und fügen Sie eine ColumnName-Eigenschaft hinzu.

doctrine:schema:import scheint nur das erste Mal zu funktionieren. auch nach dem Löschen aller. XML-Datei

Gibt es noch etwas, dass ich tun/verwenden kann, um synchron zu halten, die weniger manuell ist.

+0

, was Sie tun bedeuten wi th * dann mache das Gegenteil meiner Entity * was genau ist der Befehl? Und gibt es eine Möglichkeit, eine organisatorische Veränderung der Situation zu erreichen, da sie nicht optimal ist? oder ein solideres DB Design haben? – Confidence

+1

@Confidence Ich habe nur Lesezugriff auf die Datenbank, nur um Daten von ihr abzurufen, und das wird sich wahrscheinlich nicht ändern. was ich mit _das Gegenteil meiner Entität_ meine, ist. Wenn sie eine Spalte hinzufügen müssen, sagen Sie SpalteNeu. Meine Entity hat diese Spalte noch nicht und die einzige Möglichkeit, herauszufinden, ob die Datenbank nicht synchron ist, ist ein 'doctrine: schema: update --dump-sql', das den Aufruf' ALTER tableName DROP columnA' generiert . dann weiß ich, dass ich columnA meiner Entität hinzufügen muss. –

+0

Es sieht so aus, als ob Doctrine Migrations das ist, was Sie brauchen, um diese Änderungen https://github.com/doctrine/migrations und das Bundle dafür http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index durchzugehen. html – Confidence

Antwort

0

Versuchen Sie, mit dieser Lehre Tool Einheiten aus Ihrer Datenbank mit Reverse Engineering zu machen:

Zuerst müssen Sie XML-Metadaten zu tun Dateien mit diesem:

php bin/console doctrine:mapping:import --force AcmeBlogBundle xml 

Dann wird diese Entitäten zu machen verwenden von die XML-Dateien:

php bin/console doctrine:mapping:convert annotation ./src 
php bin/console doctrine:generate:entities AcmeBlogBundle 

http://symfony.com/doc/current/doctrine/reverse_engineering.html

+0

Dies ist das nächste, was ich zur Automatisierung bekommen kann. Obwohl einige Eigenschaften noch manuell eingegeben werden müssen. z.B. die Standardwerte der Spalte. –

Verwandte Themen