2015-04-02 11 views
11

devo seguenti entità:leggere i metadati di una proprietà un'entità 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; 

    [...] 

Come posso leggere il valore "lunghezza" della proprietà $ name? Ho letto che potrei usare i metadati della doctrina, ma non trovo nulla su come usarlo e su come leggere questi dati.

+0

Hi @VaN se la mia o nessuna risposta ha risolto la tua domanda perche [accettarla] (http://meta.stackexchange.com/q/5234/179419) facendo clic sul segno di spunta. Ciò indica alla comunità più ampia che hai trovato una soluzione e dà una certa reputazione sia al rispondente che a te stesso. Non c'è l'obbligo di farlo. – Matteo

risposta

24

In base alla risposta @wonde è possibile leggere le informazioni necessarie tramite le informazioni sui metadati di Doctrine come 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" 

Spero che questo aiuto

6

getClassMetadata (misto $ className) Restituisce il descrittore di metadati ORM per una classe

esempio

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

"Il nome della classe deve essere il nome completo della classe senza un backslash (come è restituito da get_class ($ obj) o un nome di classe alias Esempi: MyProject \ Domain \ User sales: PriceRequest "

+0

questo leggerà i metadati dell'entità, non quelli della proprietà. – VaN

+0

usa $ metadata-> fieldMappings ['name'] per ottenere le proprietà – wonde