Doctrine Support#

Packagist GitLab GitHub Bitbucket Gitea

Doctrine support is split into a separate package.

Installation#

composer require 'arokettu/uuid-doctrine'

Available Types#

  • UuidType. UUID stored in native GUID if available or CHAR(36), same as GUID type in Doctrine.

  • UuidBinaryType. UUID stored in BINARY(16).

  • UlidType. ULID stored in CHAR(26).

  • UlidBinaryType. ULID stored in BINARY(16).

Available Generators#

  • UuidV4Generator. UUIDv4 generator.

  • UuidV7Generator. UUIDv7 generator. Uses a monotonic sequence internally.

  • UlidGenerator. ULID generator. Uses a monotonic sequence internally.

Usage#

Register types:

<?php

use Arokettu\Uuid\Doctrine\{UlidBinaryType,UlidType,UuidBinaryType,UuidType};
use Doctrine\DBAL\Types\Type;

// registers types directly
Type::addType(UuidType::NAME, UuidType::class);
Type::addType(UuidBinaryType::NAME, UuidBinaryType::class);
Type::addType(UlidType::NAME, UlidType::class);
Type::addType(UlidBinaryType::NAME, UlidBinaryType::class);

Note

See your framework documentation for proper configuration of custom Doctrine types.

Apply type to a model:

<?php

use Arokettu\Uuid\Doctrine\{UuidType,UuidV4Generator};
use Arokettu\Uuid\Uuid;
use Doctrine\ORM\Mapping\{Column,CustomIdGenerator,Entity,GeneratedValue,Id,Table};

#[Entity, Table(name: 'uuid_object')]
class UuidObject
{
    #[Column(type: UuidType::NAME)]
    #[Id, GeneratedValue(strategy: 'CUSTOM'), CustomIdGenerator(UuidV4Generator::class)]
    public Uuid $id;

    #[Column(type: UuidType::NAME)]
    public Uuid $uuidString;
}