2015-04-02 93 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