РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить