Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
144 of 258 menu
◀ ▶

Поле uuid

Поле uuid создаёт колонку для хранения универсального уникального идентификатора (UUID). Оно автоматически генерирует значение при создании новой записи, если не передано другое. Поле подходит для первичных ключей и внешних связей.

Синтаксис

#[ORM\Column(type: 'uuid', options: [])]

Пример

Давайте создадим сущность с полем uuid в качестве первичного ключа:

<?php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Uid\Uuid; #[ORM\Entity] class Article { #[ORM\Id] #[ORM\Column(type: 'uuid', unique: true)] private Uuid $id; #[ORM\Column(type: 'string', length: 255)] private string $title; public function __construct() { $this->id = Uuid::v4(); } public function getId(): Uuid { return $this->id; } public function getTitle(): string { return $this->title; } public function setTitle(string $title): void { $this->title = $title; } } ?>

Теперь создадим и сохраним объект через контроллер:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/create', name: 'article_create')] public function create(EntityManagerInterface $em): Response { $article = new Article(); $article->setTitle('hello'); $em->persist($article); $em->flush(); return new Response('ID: ' . $article->getId()->toRfc4122()); } } ?>

Результат выполнения кода:

"ID: 550e8400-e29b-41d4-a716-446655440000"

Пример

Давайте найдём запись по её UUID:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Uid\Uuid; class ArticleController extends AbstractController { #[Route('/article/show/{id}', name: 'article_show')] public function show(string $id, EntityManagerInterface $em): Response { $article = $em->getRepository(Article::class)->find(Uuid::fromString($id)); if (!$article) { return new Response('not found'); } return new Response($article->getTitle()); } } ?>

Результат выполнения кода для адреса с существующим ID:

"hello"

Смотрите также

  • поле guid,
    которое также хранит уникальный идентификатор
  • поле ulid,
    которое хранит ULID-идентификатор
  • параметр unique,
    который задаёт уникальность значения
  • параметр nullable,
    который разрешает пустое значение
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить