2017-05-25 30 views
1

如果我已经使用迁移,我可以使用以下方法轻松生成增量变量: app/console doctrine:migrations:diff如何为现有的Symfony + Doctrine应用程序生成初始/基础迁移?

但假设我有一个现有的应用程序不使用迁移呢。 doctrine:migrations:diff只会在当前数据库模式和主体实体之间生成差异。问题是我需要为到此为止创建的每个实体进行初始/首次迁移,包括CREATE TABLE。我目前的解决方法是创建一个空数据库,在parameters.yml中切换凭据,然后运行doctrine:migrations:diff

我不喜欢这个解决方案 - 有更好的吗?

+2

为什么不创建一个初始SQL,它将在没有INSERTS的表CREATIONS的第一次迁移中运行? –

回答

1

如果该表不存在作为Doctrine实体,则需要为其手动创建迁移类以及任何单独的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'); 
    } 
} 

另外,还要确保您排除您的学说配置中使用过滤器,这些自定义表(@see:http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html#manual-tables

在这个例子中,你会跟MY_CUSTOM_PREFIX_

+0

@siergiej请投票有效,如果帮助引导他人遵循相同的方式 –

相关问题