5

Runningphp 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 转换为代码的能力差而引入错误。

教义:迁移:差异命令是否可以创建与平台无关的迁移代码,而不是上述特定于平台的 SQL?

4

2 回答 2

3

不,这在当前版本中是不可能的。如果您需要与数据库无关的迁移,您应该查看LiquiBase进行迁移。LiquiBase 也有一个 Symfony2 Bundle LiquibaseBundle

于 2012-08-15T08:22:51.907 回答
2

目前尚不支持其他数据库迁移工具,但他们正在计划支持一些数据库管理工具

请参阅教义:DBAL-602此票证是对 LiquiBase、DBDeploy 和 phinx 对教义迁移的支持的功能请求

于 2014-02-17T10:35:49.333 回答