2014-07-09 28 views
5

Sono un principiante in symfony2 e non riesco a ottenere la mia entità correlata in ramoscello.Symfony2 - Ottieni un'entità invece di PersistentCollection nel ramoscello

Così ho il mio soggetto principale, chiamiamolo Post, che ha una relazione OneToMany:

/** 
* @ORM\OneToMany(targetEntity="Comment", mappedBy="Post", cascade={"persist", "remove"}) 
*/ 
private $comments; 

E sto passando al ramoscello con il mio controller, posso accedere ogni proprietà, ma quando ho prova ad accedere ad una proprietà con relazioni come "Comment", ricevo un "Doctrine \ ORM \ PersistentCollection)" che ha un sacco di proprietà privata e non riesco a ottenere le proprietà di questa entità correlata. ..

Sono un po 'confuso, e non so cosa sto facendo male ...

risposta

3

È perché si sta tentando di accedere direttamente a una raccolta di entità. Dovete ciclo vostri commenti collezione:

{% for comment in post.comments %} 
    // You can get your comment entity here 
    // for example 
    <p>{{comment.description}}</p> 
{% endfor %} 
+0

Ok grazie, quello confuso mi devo essere io ho solo 1 commento sul mio post, quindi ho pensato che fosse il motivo per cui stavo cercando di accedervi direttamente, ho bisogno di un po 'di caffè credo .. – Kaz

+0

Questo è lo stesso in php btw; foreach ($ post-> getComments() come $ commento) {dump ($ comment-> getDescription()); } –

7

ottenere il primo elemento della collezione dottrina ramoscello

se hai solo 1 oggetto della collezione allora si può ottenere utilizzando il metodo first

{% set comment = post.comments.first %} 

PersistentCollection: first() method

Convert DoctrineCollection a matrice in ramoscello

Per convertire la collezione dottrina ad un array è possibile utilizzare le getValues ​​() metodo:

{% set arrayComment = post.comments.getValues %} 

PersistentCollection: getValues() method

Problemi correlati