Читать метаданные свойства объекта Doctrine

Мне нужно следующее лицо:

/**
 * ProductService
 *
 * @ORM\Table(name="sf_products_services")
 * @ORM\Entity(repositoryClass="Evo\BackendBundle\Entity\ProductServiceRepository")
 */
class ProductService
{
    [...]

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=150)
     */
    protected $name;

    [...]

Как я могу прочитать значение длины для свойства $name? Я читал, что могу использовать метаданные доктрины, но я не нахожу ничего о том, как его использовать и как читать эти данные.

Ответ 1

В соответствии с ответом @wonde вы можете прочитать информацию, которая вам нужна, через информацию метаданных Doctrine следующим образом:

    $doctrine = $this->getContainer()->get("doctrine");
    $em = $doctrine->getManager();

    $className = "Evo\BackendBundle\Entity\ProductService";

    $metadata = $em->getClassMetadata($className);

    $nameMetadata = $metadata->fieldMappings['name'];

    echo $nameMetadata['type'];  //print "string"
    echo $nameMetadata['length']; // print "150"

Надеемся на эту помощь

Ответ 2

getClassMetadata (mixed $className) Возвращает дескриптор метаданных ORM для класса

например

$metadata = $entityManager->getClassMetadata($className);

"Имя класса должно быть полностью квалифицированным именем класса без ведущей обратной косой черты (поскольку оно возвращается get_class ($ obj)) или псевдонимом класса. Примеры: MyProject\Domain\User sales: PriceRequest "