vendor/symfony/ux-autocomplete/src/Doctrine/EntityMetadata.php line 46

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\UX\Autocomplete\Doctrine;
  11. use Doctrine\Persistence\Mapping\ClassMetadata;
  12. /**
  13.  * @author Ryan Weaver <ryan@symfonycasts.com>
  14.  *
  15.  * @experimental
  16.  */
  17. class EntityMetadata
  18. {
  19.     public function __construct(
  20.         private ClassMetadata $metadata
  21.     ) {
  22.     }
  23.     public function getAllPropertyNames(): array
  24.     {
  25.         return $this->metadata->getFieldNames();
  26.     }
  27.     public function isAssociation(string $propertyName): bool
  28.     {
  29.         return \array_key_exists($propertyName$this->metadata->associationMappings)
  30.             || (str_contains($propertyName'.') && !$this->isEmbeddedClassProperty($propertyName));
  31.     }
  32.     public function isEmbeddedClassProperty(string $propertyName): bool
  33.     {
  34.         $propertyNameParts explode('.'$propertyName2);
  35.         return \array_key_exists($propertyNameParts[0], $this->metadata->embeddedClasses);
  36.     }
  37.     public function getPropertyMetadata(string $propertyName): array
  38.     {
  39.         if (\array_key_exists($propertyName$this->metadata->fieldMappings)) {
  40.             return $this->metadata->fieldMappings[$propertyName];
  41.         }
  42.         if (\array_key_exists($propertyName$this->metadata->associationMappings)) {
  43.             return $this->metadata->associationMappings[$propertyName];
  44.         }
  45.         throw new \InvalidArgumentException(sprintf('The "%s" field does not exist in the "%s" entity.'$propertyName$this->getFqcn()));
  46.     }
  47.     public function getPropertyDataType(string $propertyName): string
  48.     {
  49.         return $this->getPropertyMetadata($propertyName)['type'];
  50.     }
  51.     public function getIdValue(object $entity): string
  52.     {
  53.         return current($this->metadata->getIdentifierValues($entity));
  54.     }
  55. }