在依赖逻辑的迁移类中,我需要使用不同类型的数据库连接。如何在迁移类中通过连接名称获取新连接?
目前在 doctrine.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"
# /config/migrations/admin.yaml
name: "Admin Migrations"
migrations_namespace: "App\Migrations\Admin"
table_name: "doctrine_migration_versions"
migrations_directory: "src/Migrations/Admin"
假设您已经配置了两个实体管理器 - 一个是默认管理器,一个是“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
关于symfony - 在 Symfony 的迁移类中更改数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58519581/