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