Skip to content

Latest commit

 

History

History
63 lines (48 loc) · 1.64 KB

README.md

File metadata and controls

63 lines (48 loc) · 1.64 KB

id-to-uuid

Easily migrate from an auto incremented integer id to a uuid in a project using DoctrineMigrationsBundle. Autodetect your foreign keys and update them. Supported databases: MySQL, Postgres.

Installation

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

Usage

  1. Update your id column from integer to 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>

Alternatively you can use uuid-doctrine to add uuid type support.

<id name="id" type="uuid" />
  1. Add a new migration:
// 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');
    }
}

Alternatively you can specify second parameter to migrate method - custom temporary uuid field name

  1. After migration

Check if your db structure is different from the doctrine schema. If it does then create another migration or merge with the previous one.

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