Uuidable

Uuidable

Додає сутності UUID версії 4, що генерується при першому збереженні.

Сутність

use Doctrine\ORM\Mapping as ORM;
use Ufo\DoctrineBehaviors\Contract\Entity\UuidableInterface;
use Ufo\DoctrineBehaviors\Model\Uuidable\UuidableTrait;

#[ORM\Entity]
class BlogPost implements UuidableInterface
{
    use UuidableTrait;

    #[ORM\Id, ORM\GeneratedValue, ORM\Column]
    private ?int $id = null;
}

Як це працює

  • Бандл мапить uuid як рядкову nullable-колонку. Це додаткове поле, а не первинний ключ — ідентифікатор сутності лишається вашим.
  • На prePersist викликається generateUuid(): якщо UUID ще немає, створюється Ramsey\Uuid\Uuid::uuid4(). Заданий вручну через setUuid() не перезаписується.
  • getUuid() повертає Ramsey\Uuid\UuidInterface, навіть якщо з бази прийшов рядок.
$post = new BlogPost();
$entityManager->persist($post);
$entityManager->flush();

$post->getUuid()->toString(); // напр. '1ee9aa1b-6510-4105-92b9-7171bb2f3089'