📜  实体迁移 symfony (1)

📅  最后修改于: 2023-12-03 15:25:09.255000             🧑  作者: Mango

实体迁移 Symfony

在Symfony中,实体迁移是一种方便的机制,用于在应用程序中简化数据库模式更改的过程。通过实体迁移,开发者可以轻松地创建、修改和删除数据库表,以及添加、删除和修改表中的列。

安装实体迁移 bundle

要使用实体迁移,首先需要安装Doctrine迁移bundle。可以使用Composer包管理器在Symfony应用程序中安装它:

composer require doctrine/doctrine-migrations-bundle
创建迁移

执行下面命令可以创建一个新的迁移:

bin/console doctrine:migrations:diff

这个命令将遍历实体具有的所有更改,然后将其应用到数据库迁移文件中。 这个文件将被放在app/DoctrineMigrations 下。

如下所示,这个命令将生成一个包含所有必要更改的迁移文件:

<?php

namespace DoctrineMigrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

class VersionYYYYMMDDHHMMSS extends AbstractMigration
{
    public function up(Schema $schema) : void
    {
        // this up() migration is auto-generated, please modify it to your needs
        $this->addSql('CREATE TABLE my_table (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB');
    }

    public function down(Schema $schema) : void
    {
        // this down() migration is auto-generated, please modify it to your needs
        $this->addSql('DROP TABLE my_table');
    }
}

这个迁移文件中的up方式定义了一个新的数据库表,down方法会将该表删除。

应用迁移

在生成迁移文件后,您可以使用下面的命令将其应用于数据库:

bin/console doctrine:migrations:migrate

这个命令将遍历迁移文件,然后将所有更改应用于数据库。

维护迁移历史记录

当应用新的迁移后,可以使用下面的命令将迁移版本记录到历史记录中:

bin/console doctrine:migrations:version --add YYYYMMDDHHMMSS

这个命令将在doctrine_migration_versions表中创建一条新纪录,指示该迁移已应用。

回滚迁移

如果需要回滚最新的迁移,可以使用下面命令:

bin/console doctrine:migrations:execute --down YYYYMMDDHHMMSS

此命令将撤消应用最近的迁移,如有必要,还将将doctrine_migration_versions中的相应版本从历史记录表中删除。

总结

使用Symfony的实体迁移机制,可以轻松地创建,修改和删除数据库表,以及添加,删除和修改表中的列。这个机制自动跟踪应用程序中的数据库模式更改,并生成相应的迁移文件。这个功能让开发者更加专注于业务逻辑,无需担心数据库的底层实现细节。