РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
166 of 258 menu

Параметр unique атрибута Column

Параметр unique атрибута Column указывает, что значения в столбце таблицы должны быть уникальными. Если параметр установлен в true, Doctrine создаёт уникальный индекс для этого поля, и попытка вставить дубликат приводит к ошибке базы данных.

Параметр необязательный, по умолчанию равен false.

Синтаксис

#[Column(unique: true)]

Пример

Давайте создадим сущность User с уникальным полем email:

<?php namespace AppEntity; use DoctrineORMMapping as ORM; #[ORMEntity] #[ORMTable(name: 'users')] class User { #[ORMId] #[ORMGeneratedValue] #[ORMColumn(type: 'integer')] private ?int $id = null; #[ORMColumn(type: 'string', length: 255, unique: true)] private string $email; #[ORMColumn(type: 'string', length: 255)] private string $name; public function getEmail(): string { return $this->email; } public function setEmail(string $email): self { $this->email = $email; return $this; } public function getName(): string { return $this->name; } public function setName(string $name): self { $this->name = $name; return $this; } } ?>

Пример

Давайте попробуем сохранить двух пользователей с одинаковым email:

<?php namespace AppController; use AppEntityUser; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class UserController extends AbstractController { #[Route('/user/create', name: 'user_create')] public function create(EntityManagerInterface $em): Response { $user1 = new User(); $user1->setEmail('user@example.com'); $user1->setName('user 1'); $user2 = new User(); $user2->setEmail('user@example.com'); $user2->setName('user 2'); $em->persist($user1); $em->persist($user2); $em->flush(); return new Response('users created'); } } ?>

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

An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'user@example.com' for key 'UNIQ_1483A5E9E7927C74'

Пример

Давайте сохраним двух пользователей с разными email:

<?php namespace AppController; use AppEntityUser; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class UserController extends AbstractController { #[Route('/user/create', name: 'user_create')] public function create(EntityManagerInterface $em): Response { $user1 = new User(); $user1->setEmail('user1@example.com'); $user1->setName('user 1'); $user2 = new User(); $user2->setEmail('user2@example.com'); $user2->setName('user 2'); $em->persist($user1); $em->persist($user2); $em->flush(); return new Response('users created'); } } ?>

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

"users created"

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

  • атрибут Column,
    который описывает столбец таблицы базы данных
  • параметр nullable,
    который разрешает хранить значение NULL
  • параметр length,
    который задаёт максимальную длину строки
  • параметр name,
    который задаёт имя столбца в базе данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить