1

posts特定のに対してすべてを返す単一のDQLクエリが必要tagです。

posts多対多の関係がありtags、tag.slugが与えられます。そのタグに関連するすべての投稿を取得できるはずですが、どうすればよいでしょうか。

アップデート:

私はSymfony2でDoctrine2.1を使用していますが、私のエンティティは次のようになります。

/**
 * @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;
}
4

1 に答える 1

1

1つのタグのみで検索する場合は、次のことを試してください。

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

複数のタグで検索する場合は、条件を次のように変更するだけです。

... WHERE tag.slug IN ( {$slug1}, {$slug2}, ... {$slugN} )
于 2012-04-09T10:50:42.267 に答える