我正试图找出一种通过博客获取标签的方法。我知道您可以获取所有博客并使用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;
}
答案 0 :(得分:1)
您应该从与博客一起加入的标签表中选择(在标签库中),如下所示:
$blogTags = $this->createQueryBuilder('Tags')
->select('Tags.id')
->leftJoin('Tags.blog', 'Blog')
->where('Blog.id = :blogId')
->setParameter('blogId', $blogId);
这将创建包含与具有Id = $ blogId。
的博客相关的所有标签ID的查询