在Symfony中的迁移类中更改数据库连接

在Symfony中的迁移类中更改数据库连接,symfony,doctrine,symfony4,Symfony,Doctrine,Symfony4,在迁移类中,根据逻辑,我需要使用不同类型的数据库连接。如何在迁移类中通过连接名称获取新连接 目前在doctor.yaml文件中,我有连接名“default”、“user”、“admin”和“cron” 我的迁移类: final class Version20190711123152 extends AbstractMigration { public function up(Schema $schema) : void { ... if($

在迁移类中,根据逻辑,我需要使用不同类型的数据库连接。如何在迁移类中通过连接名称获取新连接

目前在
doctor.yaml
文件中,我有连接名“default”、“user”、“admin”和“cron”

我的迁移类:

final class Version20190711123152 extends AbstractMigration
{
     public function up(Schema $schema) : void
     { 
        ...

        if($someCondition) {
            $this->setConnection($wantedConnection) // how to set $wantedConnection for example on "admin" connection
        }
     }

    /**
     * @param Connection $connection
     */
    public function setConnection(Connection $connection): void
    {
        $this->connection = $connection;
    }

我使用的是Symfony 4.3

我不知道您的具体使用情况,但我认为迁移不应该是有条件的,也就是说,您可能会在不同的环境中使用不一致的数据库

可以考虑将迁移文件存储在不同的目录中,并在运行迁移时使用不同的配置和实体管理器。

# /config/migrations/default.yaml
name: "Default Migrations"
migrations_namespace: "App\Migrations\Default"
table_name: "doctrine_migration_versions"
migrations_directory: "src/Migrations/Default"
假设您已经配置了两个实体管理器—一个是默认的,另一个是具有“admin”名称的,那么您可以分别运行这些迁移:

php bin/console doctrine:migrations:migrate --configuration=config/migrations/default.yaml
php bin/console doctrine:migrations:migrate --configuration=config/migrations/admin.yaml --em=admin

我不知道您的具体使用情况,但我认为迁移不应该是有条件的,也就是说,您可能会在不同的环境中使用不一致的数据库

可以考虑将迁移文件存储在不同的目录中,并在运行迁移时使用不同的配置和实体管理器。

# /config/migrations/default.yaml
name: "Default Migrations"
migrations_namespace: "App\Migrations\Default"
table_name: "doctrine_migration_versions"
migrations_directory: "src/Migrations/Default"
假设您已经配置了两个实体管理器—一个是默认的,另一个是具有“admin”名称的,那么您可以分别运行这些迁移:

php bin/console doctrine:migrations:migrate --configuration=config/migrations/default.yaml
php bin/console doctrine:migrations:migrate --configuration=config/migrations/admin.yaml --em=admin

问题是我需要按时间顺序对某些类型的迁移进行排序。例如,我使用admin DB连接更改了一些表,并插入了一些带有更改数据的行。在您的情况下,迁移将中断,因为还没有更改的列,这将在第二个命令中创建。问题是,我需要按时间顺序对某些类型的迁移进行排序。例如,我使用admin DB连接更改了一些表,并插入了一些带有更改数据的行。在您的情况下,迁移将中断,因为还并没有更改的列,这将在第二个命令中创建。