Читать метаданные свойства объекта 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 "