2012-04-08 97 views
1

我需要一個DQL查詢,它將返回給定的tag的所有posts學說:獲得所有兒童的多對多關係

poststags有一個多對多的關係,給定一個tag.slug我應該能夠獲得與該標記相關的所有帖子,但是如何?

UPDATE:

我使用學說2.1 Symfony的2,我的實體是這樣的:

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

你需要的是一個'存在'查詢,但很難說沒有細節的更具體的東西,例如學說版本以及表格結構和關聯。 – 2012-04-09 00:25:43

+0

檢查更新。 – 2012-04-09 10:07:20

回答

1

如果你只想要一個標籤來搜索,試試這個:

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

如果要搜索多個標籤,只需將條件更改爲:

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

非常好!奇蹟般有效 :) – 2012-04-09 15:17:15