gpt4 book ai didi

Symfony2 - 可以学说 :migrations:diff create DB-agnostic code instead of SQL?

转载 作者:行者123 更新时间:2023-12-02 16:46:25 25 4
gpt4 key购买 nike

正在运行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?

最佳答案

不,当前版本不可能做到这一点。如果您需要与数据库无关的迁移,您应该看看 LiquiBase用于迁移。 LiquiBase 也有一个 Symfony2 bundle LiquibaseBundle

关于Symfony2 - 可以学说 :migrations:diff create DB-agnostic code instead of SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com