Symfony2-是否可以原则:迁移:diff创建与数据库无关的代码而不是SQL?
运行Symfony2-是否可以原则:迁移:diff创建与数据库无关的代码而不是SQL?,symfony,doctrine-orm,doctrine-migrations,Symfony,Doctrine Orm,Doctrine Migrations,运行php应用程序/控制台原则:migrations:diff将根据需要生成一个新的迁移类,以将当前数据库模式转换为实体更改指定的模式 此示例显示了用于创建fos\u用户表的生成类: class Version20120712145445 extends AbstractMigration { public function up(Schema $schema) { $this->abortIf($this->connection->getDat
php应用程序/控制台原则:migrations:diff
将根据需要生成一个新的迁移类,以将当前数据库模式转换为实体更改指定的模式
此示例显示了用于创建fos\u用户
表的生成类:
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()$表->添加列()代码>等价物,但是这样做既耗时又会引入错误,因为SQL的人工翻译很差
原则:迁移:diff命令是否可以创建平台无关的迁移代码,而不是上述特定于平台的SQL?否,这在当前版本中是不可能的。如果您需要数据库不可知的迁移,那么您应该查看迁移。LiquiBase也有一个Symfony2捆绑包目前不支持其他数据库迁移工具,但他们计划支持一些数据库管理工具
请看,这张罚单是对LiquiBase、DBDeploy和phinx支持条令迁移的功能请求我认为答案是否定的,还没有。。。无论如何,diff工具应该只是一个很好的工具,不应该避免开发人员自己编写迁移类。但我还是同意这是一个不错的特性。