如果我已经使用迁移,我可以使用以下方法轻松生成增量迁移:app/console doctrine:migrations:diff
.
但是假设我有一个现有的应用程序,它还没有使用迁移。doctrine:migrations:diff
只会在当前的数据库模式和原则实体之间生成一个diff。问题是我需要有一个初始/第一次迁移,其中包含到目前为止创建的每个实体的CREATE TABLE
。我目前的解决方法是创建一个空数据库,在parameters.yml
中切换凭据,然后运行doctrine:migrations:diff
。
我不喜欢这个解决方案-有更好的吗?
3条答案
按热度按时间bfnvny8b1#
您可以使用doctrine:schema:create --dump-sql来生成用于创建的sql,并将其放入第一个迁移版本中
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/tools.html#database-schema-generation
puruo6ea2#
如果表不作为Doctrine实体存在,则需要手动为其创建一个迁移类,以及任何单独的Fixture。
此外,请确保使用Doctrine配置中的过滤器排除这些自定义表(@请参见:http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html#manual-tables)
在本例中,将
t_
替换为MY_CUSTOM_PREFIX_
fquxozlt3#
还有一点:
使用标志**--from-empty-schema**,它将执行您所要求的操作。
之后,如果数据库已经设置好了,你可以(必须)在
doctrine_migration_versions
表中手动添加一个条目,然后你想(必须)运行/bin/console doctrine:migrations:migrate
。