 <p>You could get the Threads in the next way:</p> <pre><code>public function getThreads($user) { $em = $this-&gt;getEntityManager(); $query = $em-&gt;createQuery( 'SELECT t FROM AcmeMessageBundle:Thread t WHERE :user MEMBER OF t.users ORDER BY t.date DESC' ) -&gt;setParameter('user', $user) -&gt;setMaxResults( 20 ); $threads = $query-&gt;getResult(); return $threads; } </code></pre> <p>And you will receive a Doctrine ArrayCollection of Threads (you need to remove AcmeMessageBundle and put the right name of your Bundle).</p> <p><strong>EDIT:</strong> Reading your question again, and seeing your examples, I think that what you want are not the threads, are the posts of the threads related with the user. You could do this adding a bidirectional relation between your Post and your Thread entities, as below:</p> <p>In the Thread entity, add this:</p> <pre><code>/** * @ORM\OneToMany(targetEntity="\Acme\MessageBundle\Entity\Post", mappedBy="thread") */ private $posts; </code></pre> <p>And in the <em>construct</em> function:</p> <pre><code>$this-&gt;posts = new \Doctrine\Common\Collections\ArrayCollection(); </code></pre> <p>In the Post entity, modify your lines as here:</p> <pre><code>/** * @ORM\ManyToOne(targetEntity="Acme\MessageBundle\Entity\Thread", inversedby="posts") * @ORM\JoinColumn(nullable=false) */ private $thread; </code></pre> <p>And generate the getter and setter for the posts in the Thread entity, so in this way, you can get the posts after you get the threads as above.</p>