Новое в Symfony 5.2: Типы Doctrine для UUID и ULID

В Symfony 5.1 представили новый компонент Uid, который поможет вам генерировать и работать с различными значениями UID, такими как UUID и ULID. Следующим шагом будет улучшение интеграции с другими компонентами Symfony.

Вот почему в Symfony 5.2 добавили типы и генераторы Doctrine для UUID и ULID. Вам нужно только установить Doctrine в свое приложение Symfony, и новые типы будут доступны как uuid, uuid_binary, ulid и ulid_binary:

// src/Entity/Product.php
namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\ProductRepository")
 */
class Product
{
    /**
     * @ORM\Column(type="uuid")
     */
    private $someProperty;

    /**
     * @ORM\Column(type="ulid")
     */
    private $anotherProperty;

    // ...
}

При использовании этих типов значение свойств будет автоматически преобразовано из/в объекты UUID/ULID. Вы также можете сгенерировать значения UUID/ULID для своих первичных ключей, используя новые генераторы:

// there are generators for UUID V1 and V6 too
use Symfony\Bridge\Doctrine\IdGenerator\UuidV4Generator;

/**
 * @ORM\Entity(repositoryClass="App\Repository\ProductRepository")
 */
class Product
{
    /**
     * @ORM\Id
     * @ORM\Column(type="uuid", unique=true)
     * @ORM\GeneratedValue(strategy="CUSTOM")
     * @ORM\CustomIdGenerator(class=UuidV4Generator::class)
     */
    private $id;

    // ...
}


use Symfony\Bridge\Doctrine\IdGenerator\UlidGenerator;

/**
 * @ORM\Entity(repositoryClass="App\Repository\ProductRepository")
 */
class Product
{
    /**
     * @ORM\Id
     * @ORM\Column(type="ulid", unique=true)
     * @ORM\GeneratedValue(strategy="CUSTOM")
     * @ORM\CustomIdGenerator(class=UlidGenerator::class)
     */
    private $id;

    // ...
}