2017-09-22 2 views
0

Ich habe vier verschiedene Datenbanken in meinem Symfony-Projekt. Lokal haben diese Datenbanken ihre individuellen Namen, so dass man sie in den Migrationen unterscheiden kann. Ich habe jede Tabelle mit db_name.table in jeder Migration vorangestellt, damit die korrekte Datenbank migriert wird.Migrieren Sie mehrere Datenbanken mit Symfony-Migrationen ohne Angabe des Datenbanknamens

Jetzt möchte ich dies auf einem Remote einrichten, wo die Datenbanknamen automatisch generiert werden (mit flynn.io), aber die Datenbanknamen sind in allen Migrationen behoben ... Gibt es eine Möglichkeit, die DB-Namen zu lesen aus Umgebungsvariablen oder einer ähnlichen Lösung?

Antwort

0

Sie DoctrineMigrationsBundle

public function up(Schema $schema) 
{ 
    // ... empty function/ no migrations commands 
} 


public function postUp(Schema $schema) 
{ 

    // get datebase name here, and then pass this database names to another function 
    $converter = $this->container->get('db_names_from_paratmers.yml file'); 
    $this->initDatabase('db1'); 
} 

public function initDatabase($dbname) 
{ 
    $this->addSql('CREATE TABLE '.$dbname.'office (id INT AUTO_INCREMENT NOT NULL, email VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB'); 
} 

See nutzen können, wenn dies irgendwie Ihre Notwendigkeit zufrieden, müssen Sie nur DB Namen und eingebettet in paramters.yml Datei zu finden.

Verwandte Themen