2015-04-02 31 views
11

muszę następującym podmiocie:odczytać metadane doktryny własności podmiotu

/** 
* 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; 

    [...] 

Jak można przeczytać „długość” wartość nieruchomości $ name? Czytałem, że mogę używać metadanych doktryny, ale nie znajduję niczego o tym, jak z tego korzystać i jak odczytać te dane.

+0

Hi @VaN jeśli kopalnia lub jakakolwiek odpowiedź rozwiązała Twój pytanie należy rozważyć [zaakceptowaniem] (http://meta.stackexchange.com/q/5234/179419) klikając na znacznik wyboru. Wskazuje to szerszej społeczności, że znalazłeś rozwiązanie i dajesz reputację zarówno autorowi, jak i sobie. Nie ma obowiązku tego robić. – Matteo

Odpowiedz

24

Zgodnie z odpowiedzią @wonde możesz przeczytać informacje, których potrzebujesz, korzystając z informacji metadanych Doctrine jako fa 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" 

Nadzieja ta pomoc

6

getClassMetadata (mixed $ className) Zwraca deskryptor metadanych ORM dla klasy

np

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

„Nazwa klasy musi być w pełni kwalifikowaną nazwę klasy bez wiodącego backslash (jak to jest zwracane przez get_class ($ obj)) lub nazwę klasy aliasowej Przykłady: MyProject \ Domain \ Sprzedaż użytkownika: PriceRequest "

+0

to odczytałoby metadane jednostki, a nie jej właściwości. – VaN

+0

użyj $ metadata-> fieldMappings ['name'], aby uzyskać właściwości – wonde