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

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

Параметр length атрибута Column задаёт максимальную длину строкового поля в базе данных. Он применяется только к строковым типам, например string или ascii_string. Значение параметра передаётся целым числом и определяет, сколько символов может хранить колонка.

Синтаксис

#[Column(length: 255)]

Пример

Давайте создадим сущность Article со строковым полем title длиной 100 символов:

<?php namespace AppEntity; use DoctrineORMMapping as ORM; #[ORMEntity] #[ORMTable(name: 'articles')] class Article { #[ORMId] #[ORMGeneratedValue] #[ORMColumn] private ?int $id = null; #[ORMColumn(length: 100)] private ?string $title = null; public function getId(): ?int { return $this->id; } public function getTitle(): ?string { return $this->title; } public function setTitle(string $title): static { $this->title = $title; return $this; } } ?>

В результате в базе данных будет создана колонка title типа VARCHAR(100).

Пример

Давайте проверим, что произойдёт при попытке сохранить строку длиннее заданного лимита:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_create')] public function create(EntityManagerInterface $em): Response { $article = new Article(); $article->setTitle(str_repeat('abcde', 30)); $em->persist($article); $em->flush(); return new Response('saved'); } } ?>

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

"An exception occurred while executing a query: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'title' at row 1"

Пример

Давайте создадим поле code с длиной 10 и запишем в него строку 'abcde', которая помещается в лимит:

<?php namespace AppEntity; use DoctrineORMMapping as ORM; #[ORMEntity] #[ORMTable(name: 'articles')] class Article { #[ORMId] #[ORMGeneratedValue] #[ORMColumn] private ?int $id = null; #[ORMColumn(length: 10)] private ?string $code = null; public function getId(): ?int { return $this->id; } public function getCode(): ?string { return $this->code; } public function setCode(string $code): static { $this->code = $code; return $this; } } ?>

Теперь сохраним значение и выведем его:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/code', name: 'article_code')] public function code(EntityManagerInterface $em): Response { $article = new Article(); $article->setCode('abcde'); $em->persist($article); $em->flush(); return new Response($article->getCode()); } } ?>

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

abcde

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

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