如果我已经使用了迁移,我可以使用以下方法轻松生成增量迁移:
app/console doctrine:migrations:diff
。
但假设我有一个尚未使用迁移的现有应用程序。 doctrine:migrations:diff
只会在当前数据库模式和doctrine实体之间生成差异。问题是我需要为到目前为止创建的每个实体都有CREATE TABLE
的初始/第一次迁移。我目前的解决方法是创建一个空数据库,在parameters.yml
中切换凭据,然后运行doctrine:migrations:diff
。
我不喜欢这个解决方案 - 有更好的解决方案吗?
答案 0 :(得分:4)
您可以使用doctrine:schema:create --dump-sql来生成用于创建的sql并将其放入第一个迁移版本
答案 1 :(得分:1)
如果该表不作为Doctrine Entity存在,您需要手动为其创建迁移类,以及任何单独的Fixtures。
<?php
namespace DoctrineMigrations;
use DoctrineDBALMigrationsAbstractMigration,
DoctrineDBALSchemaSchema;
class Version00001 extends AbstractMigration
{
public function up(Schema $schema)
{
$this->addSql('CREATE TABLE MY_CUSTOM_PREFIX_example (id INT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB');
}
public function down(Schema $schema)
{
$this->addSql('DROP TABLE MY_CUSTOM_PREFIX_example');
}
}
还要确保使用Doctrine配置中的过滤器排除这些自定义表(@see:http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html#manual-tables)
对于此示例,您将t_
替换为MY_CUSTOM_PREFIX_