读取 Doctrine 实体的元数据 属性

read metadata of a Doctrine entity property

我必须关注以下实体:

/**
 * 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 属性 的 "length" 值?我读到我可以使用学说元数据,但我没有找到任何关于如何使用它以及如何阅读这些数据的信息。

getClassMetadata( mixed $className ) Returns class

的 ORM 元数据描述符

例如

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

"class 名称必须是不带前导反斜杠的完全限定 class 名称(因为它由 get_class($obj) 返回)或别名 class 名字。 示例:MyProject\Domain\User sales:PriceRequest"

根据@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"

希望对您有所帮助