2017-05-25 14 views
1

既にマイグレーションを使用している場合は、 app/console doctrine:migrations:diffを使用してインクリメンタルワンを簡単に生成できます。既存のSymfony + Doctrineアプリケーションの初期/ベースマイグレーションを生成するにはどうすればよいですか?

ただし、まだ移行を使用していない既存のアプリケーションがあるとします。 doctrine:migrations:diffは、現在のデータベーススキーマと教義のエンティティの間にdiffを生成するだけです。問題は、この時点までに作成されたすべてのエンティティに対して、CREATE TABLEで構成される初期/最初の移行を行う必要があることです。私の現在の回避策は、空のデータベースを作成し、資格情報をparameters.ymlに切り替えて、doctrine:migrations:diffを実行することです。

私はこの解決策が嫌いです。より良い解決策がありますか?

+2

INSERTなしでCREATIONSテーブルを使用して最初の移行で実行される初期SQLを作成しないのはなぜですか? –

答えて

1

テーブルがDoctrine Entityとして存在しない場合は、そのテーブルのマイグレーションクラスと別のフィクスチャを手動で作成する必要があります。

<?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他の人たちと同じようにガイドするのに役立ちましたら、それを有効に投票してください –

関連する問題