Symfony2/条令-通过博客获取标签

Symfony2/条令-通过博客获取标签,symfony,tags,doctrine,Symfony,Tags,Doctrine,我正在想办法通过博客获取标签。我知道你可以得到所有的博客并使用for循环来获得每个博客的标签,但是使用这种方法我无法在单个标签上进行选择,我最终得到了所有标签,而不是只能在一个标签上进行选择 与我在这里尝试做的相关: 标记在blog实体中设置为字符串 我理论上试图提出的问题不起作用——它缺少什么 public function getTagsByBlog() { $blogTags = $this->createQueryBuilder('b') ->sele

我正在想办法通过博客获取标签。我知道你可以得到所有的博客并使用for循环来获得每个博客的标签,但是使用这种方法我无法在单个标签上进行选择,我最终得到了所有标签,而不是只能在一个标签上进行选择

与我在这里尝试做的相关:

标记在blog实体中设置为字符串

我理论上试图提出的问题不起作用——它缺少什么

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;
}

您应该从与blog(标记存储库内部)连接的标记表中进行选择,如下所示:

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

这将创建一个查询,其中包含与Blog相关的所有标记Id,这些标记Id的Id为$blogId。

所以您建议我创建一个标记实体?现在标签作为字符串是blog实体的一部分。哦,我想它已经有了这种关系。是的,你肯定应该有很多相关的Blog-Tags。我可以用当前的方式在Blog实体内将其设置为字符串属性吗?你可以使用PHP explode函数将字符串转换为数组,然后简单地迭代。例如:explode(“,”,$blog->getTags());我希望按照您的建议,实践实现标记,因为它是自己的实体。将标记设置为实体后,在twig中为标记设置表单的最佳方法是什么?我有一个博客表单,但是我如何才能包含它,这样我就不必为标签创建单独的表单?