cap-collectif/id-to-uuid

轻松地将自增id迁移到uuid

v2.1.0 2020-06-12 14:32 UTC

README

在项目中使用 DoctrineMigrationsBundle 将自增整数id轻松迁移到 uuid。自动检测外键并更新。支持的数据库:MySQL, Postgres

安装

composer require cap-collectif/id-to-uuid
# install for postgres support
composer require ramsey/uuid

用法

  1. id 列从 integer 更新为 guid
# User.orm.xml
<entity name="AppBundle\Entity\User" table="user">
---    <id name="id" column="id" type="integer">
---        <generator strategy="AUTO" />
+++    <id name="id" column="id" type="guid">
+++        <generator strategy="UUID" />
    </id>
 #...
</entity>

或者您可以使用 uuid-doctrine 添加 uuid 类型支持。

<id name="id" type="uuid" />
  1. 添加新迁移
// app/DoctrineMigrations/VersionXYZ.php
<?php

namespace Application\Migrations;

use Doctrine\DBAL\Schema\Schema;
use CapCollectif\IdToUuid\IdToUuidMigration;

class VersionXYZ extends IdToUuidMigration //or PostgresIdToUuidMigration
{
    public function postUp(Schema $schema): void
    {
        $this->migrate('user');
    }
}

或者您可以在 migrate 方法中指定第二个参数 - 自定义临时uuid字段名称

  1. 迁移后

检查您的数据库结构是否与doctrine模式不同。如果不同,则创建另一个迁移或与上一个迁移合并。

bin/console doctrine:schema:update --dump-sql
bin/console doctrine:migration:diff