Tom*_*uer 4 migration doctrine bundle symfony
如何更改config.yml中的默认迁移目录?现在我使用2个不同数据库连接的捆绑包,我想创建迁移文件并将它们存储在不同的目录中以使用该教义:迁移:migrate --em =捆绑包的依赖性中的任何函数.
例如:
doctrine:migrate:diff --em=whatever #creating a version file in the DoctrineMigrationsWhatever directory
php app/console doctrine:migrations:status --em=whatever # shows only the version files, that belong to the bundle
Run Code Online (Sandbox Code Playgroud)
Cyp*_*ian 12
如果您要为第二个连接/包创建单独的实体管理器,您将在DoctrineMigrations目录中获得另一个目录.例如:
app/
DoctrineMigrations/
entityManager1/
entityManager2/
Run Code Online (Sandbox Code Playgroud)
如果要将所有迁移放到另一个目录,可以在config.yml中设置它:
doctrine_migrations:
dir_name: '%kernel.root_dir%/../Acme/CommonBundle/DoctrineMigrations'
namespace: 'Acme\CommonBundle\DoctrineMigrations'
Run Code Online (Sandbox Code Playgroud)
如果你想要一些更复杂的东西,比如从bundle1中的em1迁移到dir1,并将bundle2中的em2迁移到dir2,你需要另外两个配置文件,你可以为特定的bundle指定目录:
然后你运行这样的迁移:
doctrine:migrations:status --em=em1 --configuration=./path/to/bundle1/Resources/config/migrations.yml
doctrine:migrations:status --em=em2 --configuration=./path/to/bundle2/Resources/config/migrations.yml
Run Code Online (Sandbox Code Playgroud)
通过https://github.com/doctrine/DoctrineMigrationsBundle/pull/46,migrations.yml
文件应如下所示:
name: Doctrine Postgres Migrations
migrations_namespace: Application\Migrations
table_name: migration_versions
migrations_directory: PostgreSqlMigrations
Run Code Online (Sandbox Code Playgroud)
对于发现此页面并花费数小时试图实施Cyprian解决方案的其他人来说,它不起作用.
首先,--configuration遭到破坏,其次,doctrine迁移包不支持多个实体管理器.
见https://github.com/doctrine/DoctrineMigrationsBundle/issues/18有关信息--configuration,看看https://github.com/doctrine/DoctrineMigrationsBundle/pull/46一个开放拉请求支持多个实体管理器.
如果PR#46通过,这将是一个简单的配置:
doctrine_migrations:
default:
dir_name: ...
namespace: ...
em2:
dir_name: ...
namespace: ...
目前唯一可用的调整是:
doctrine_migrations:
dir_name: '%kernel.root_dir%/../Acme/CommonBundle/DoctrineMigrations'
namespace: 'Acme\CommonBundle\DoctrineMigrations'
但这将更新所有实体管理器中所有迁移的配置.
| 归档时间: |
|
| 查看次数: |
5090 次 |
| 最近记录: |