Iva*_*vić 3 doctrine symfony symfony4
在迁移类中,根据逻辑,我需要使用不同类型的数据库连接。如何在迁移类中通过连接名称获取新连接?
目前在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;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 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"
Run Code Online (Sandbox Code Playgroud)
# /config/migrations/admin.yaml
name: "Admin Migrations"
migrations_namespace: "App\Migrations\Admin"
table_name: "doctrine_migration_versions"
migrations_directory: "src/Migrations/Admin"
Run Code Online (Sandbox Code Playgroud)
假设您配置了两个实体管理器 - 一个是默认的,另一个是“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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1528 次 |
最近记录: |