paramah/id-to-uuid

轻松从自增id迁移到uuid

v2.0 2018-11-16 14:45 UTC

This package is auto-updated.

Last update: 2024-09-27 06:21:52 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