Easily migrate from auto incremented id to uuid

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

This package is auto-updated.

Last update: 2021-11-27 00:40:55 UTC


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.


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


  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" />

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

namespace Application\Migrations;

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

class VersionXYZ extends IdToUuidMigration //or PostgresIdToUuidMigration
    public function postUp(Schema $schema): void

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