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

Метод getClassMetadata

Метод getClassMetadata класса EntityManager возвращает объект ClassMetadata, который содержит информацию о сущности: имя таблицы, список полей, типы полей, связи и настройки маппинга. Первым параметром передаётся имя класса сущности (FQCN) или имя сущности.

Объект метаданных полезен, когда нужно получить список полей сущности, имя таблицы или тип конкретного поля без выполнения SQL-запроса.

Синтаксис

$metadata = $em->getClassMetadata(EntityClass::class);

Пример

Давайте получим метаданные сущности Article и выведем имя таблицы и список полей:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/metadata', name: 'article_metadata')] public function metadata(EntityManagerInterface $em): Response { $metadata = $em->getClassMetadata(Article::class); $table = $metadata->getTableName(); $fields = $metadata->getFieldNames(); return new Response($table . ': ' . implode(', ', $fields)); } } ?>

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

article: id, title, text, views, published

Пример

Давайте получим тип конкретного поля сущности:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/field-type', name: 'article_field_type')] public function fieldType(EntityManagerInterface $em): Response { $metadata = $em->getClassMetadata(Article::class); $type = $metadata->getTypeOfField('title'); $nullable = $metadata->isNullable('title'); return new Response($type . ' nullable: ' . ($nullable ? 'yes' : 'no')); } } ?>

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

string nullable: no

Пример

Давайте проверим, является ли поле идентификатором:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/id-field', name: 'article_id_field')] public function idField(EntityManagerInterface $em): Response { $metadata = $em->getClassMetadata(Article::class); $idFields = $metadata->getIdentifierFieldNames(); $isId = $metadata->isIdentifier('id'); return new Response(implode(', ', $idFields) . ' / ' . ($isId ? 'id' : 'not id')); } } ?>

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

id / id

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

  • класс EntityManager,
    который управляет сущностями Doctrine
  • метод getRepository,
    который возвращает репозиторий сущности
  • метод find,
    который находит сущность по идентификатору
  • метод getReference,
    который возвращает ссылку на сущность
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить