【问题标题】:Migrate multiple databases with Symfony migrations, without specifying db name使用 Symfony 迁移迁移多个数据库,无需指定数据库名称
【发布时间】:2018-03-04 11:19:48
【问题描述】:
我的 Symfony 项目中有四个不同的数据库。这些数据库在本地都有各自的名称,因此在迁移中可以将它们区分开来。我在每次迁移中都为每个表添加了 db_name.table 前缀,以便迁移正确的数据库。
现在我想在自动生成数据库名称的远程服务器上进行设置(使用 flynn.io),但是数据库名称在所有迁移中都是固定的...有没有办法从中读取数据库名称环境变量或类似的解决方案?
【问题讨论】:
标签:
symfony
doctrine
doctrine-migrations
flynn
【解决方案1】:
您可以使用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');
}
看,如果这以某种方式满足您的需求,您只需要找到数据库名称并将其嵌入 paramters.yml 文件中。