実行php app/console doctrine:migrations:diff
すると、必要に応じて新しい移行クラスが生成され、現在のデータベース スキーマがエンティティへの変更によって指定されたスキーマに変換されます。
この例は、fos_user
テーブルを作成するために生成されたクラスを示しています。
class Version20120712145445 extends AbstractMigration
{
public function up(Schema $schema)
{
$this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql");
$this->addSql("CREATE TABLE fos_user (id INT AUTO_INCREMENT NOT NULL, ...);
}
public function down(Schema $schema)
{
$this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql");
$this->addSql("DROP TABLE fos_user");
}
}
ご覧のとおり、生成された移行は特定のデータベース サーバー (このインスタンスでは MySQL) に関連付けられています。
テストの実行時間を短縮する (予想される) パフォーマンス上の利点があるため、テスト環境でインメモリ sqlite データベースを使用したいと考えています。
上記で生成された SQL を取得して同等のものに変換することもできますが、$table = $schema->createTable(); $table->addColumn();
これには時間がかかり、人間による SQL からコードへの変換が不十分であるため、エラーが発生する可能性があります。
doctrine:migrations:diff コマンドは、上記のプラットフォーム固有の SQL の代わりに、プラットフォームに依存しない移行コードを作成できますか?