2012-04-08 13 views
1

Ich brauche eine einzelne DQL-Abfrage, die alle posts für eine gegebene tag zurückgeben würde.Lehre: Erhalten Sie alle Kinder einer Viele-zu-Viele-Beziehung

posts und tags haben eine Viele-zu-viele-Beziehung, s gegeben ein tag.slug Ich sollte in der Lage sein, alle Beiträge zu diesem Tag zu bekommen, aber wie?

UPDATE:

Ich verwende Lehre 2.1 mit Symfony 2, meine Entitäten wie folgt aussehen:

/** 
* @ORM\Entity 
* @ORM\Table(name="articles__posts") 
*/ 
class ArticlePost 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\ManyToMany(targetEntity="ArticleTag", inversedBy="posts") 
    * @ORM\JoinTable(name="articles__posts_tags") 
    */ 
    protected $tags; 
} 

/** 
* @ORM\Entity 
* @ORM\Table(name="articles__tags") 
* @UniqueEntity(fields="slug") 
*/ 
class ArticleTag 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\ManyToMany(targetEntity="ArticlePost", mappedBy="tags") 
    */ 
    protected $posts; 
} 
+1

was Sie brauchen, ist eine "existiert" Abfrage, aber es ist schwer, etwas spezifischer ohne die Details, z. Doktrinversion und die Tabellen Strukturen und Assoziationen. –

+0

Überprüfen Sie das Update. –

Antwort

1

Wenn Sie nur mit einem Tag suchen möchten, versuchen Sie dies:

SELECT post FROM ArticlePost post 
JOIN post.tags tag 
WHERE tag.slug = {$tagSlug} 

Wenn Sie mit mehr als einem Tag suchen möchten, einfach um den Zustand zu ändern:

... WHERE tag.slug IN ({$slug1}, {$slug2}, ... {$slugN}) 
+0

Ausgezeichnet! Klappt wunderbar :) –

Verwandte Themen