Symfony2 / Doctrine - 通过博客获取标签

时间:2014-04-22 05:20:00

标签: symfony tags doctrine

我正试图找出一种通过博客获取标签的方法。我知道您可以获取所有博客并使用for循环来获取每个博客的标签,但使用此方法我无法选择单个标签,我最终拥有所有标签,而不是只能选择一个标签。

与我在此处尝试的内容相关:Symfony2 - How to you list one specific post tag instead of all of them?

标记在博客实体中设置为字符串。

我理论上试图放在一起的查询不起作用 - 它缺少什么?

public function getTagsByBlog()
{
    $blogTags = $this->createQueryBuilder('b')
        ->select('b.id')
        ->where('b.id = :tag')
        ->setParameter('tag', 'b.tags');

    return $blogTags->getQuery()->getResult();
}

实体

/**
 * Set tags
 *
 * @param string $tags
 * @return Blog
 */
public function setTags($tags)
{
    $this->tags = $tags;

    return $this;
}

/**
 * Get tags
 *
 * @return string
 */
public function getTags()
{
    return $this->tags;
}

1 个答案:

答案 0 :(得分:1)

您应该从与博客一起加入的标签表中选择(在标签库中),如下所示:

$blogTags = $this->createQueryBuilder('Tags')
        ->select('Tags.id')
        ->leftJoin('Tags.blog', 'Blog')
        ->where('Blog.id = :blogId')
        ->setParameter('blogId', $blogId);

这将创建包含与具有Id = $ blogId。

的博客相关的所有标签ID的查询