2015-04-02 74 views
11

我有以下实体的元数据:读主义实体属性

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

+0

@VaN嗨,如果我的或任何的回答已经解决了您的问题,请考虑[接受它(http://meta.stackexchange.com/q/5234/179419)通过点击复选标记。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 – Matteo 2015-04-07 05:24:26

回答

24

与@wonde回答一起手风琴,您可以通过Doctrine元数据信息阅读所需的信息,如下所示: F ollow:

$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" 

希望这有助于

6

getClassMetadata(混合的$ className)返回ORM元数据描述了一类

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

“之类的名称必须是完全合格的类名不带前导反斜杠(因为它是例如:MyProject \ Domain \ User销售:PriceRequest“

+0

这会读取实体元数据,而不是属性的元数据。 – VaN 2015-04-03 07:13:13

+0

使用$ metadata-> fieldMappings ['name']获取属性 – wonde 2015-04-03 15:08:02