2014-05-12 39 views
0

我目前在标签实体和博客实体之间有ManyToMany/ManyToMany关系。Symfony2 - 无法从ManyToMany关系访问标签

我现在使用的学说查询如下:

$qb = $this->createQueryBuilder('b') 
     ->select('b, c, t') 
     ->innerJoin('b.category', 'c') 
     ->innerJoin('b.tags', 't') 
     ->addOrderBy('b.created', 'DESC'); 

    return $qb->getQuery() 
     ->getResult(); 

当我试图访问标签树枝下列要求:

1)(标签消失,并且不显示)

{% for tag in blog %} 
    <p class="tag-links"><span>Tagged:</span> rel="tag">{{ tag.tags }}</a>, <a href="" rel="tag">Tag 2</p> 
{% endfor %} 

2)(没有for循环 - 我得到一个错误(不能转换成字符串))

<p class="tag-links"><span>Tagged:</span> rel="tag">{{ tag.tags }}</a>, <a href="" rel="tag">Tag 2</p> 

控制器

public function indexAction() 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $blogs = $em->getRepository('AcmeBundle:Blog') 
     ->getBlogs(); 

    return array(
     'blogs' => $blogs, 
    ); 
} 

回答

2

你的循环应该指向您的博客,而不是博客实体本身的标签属性。

{% for tag in blog.tags %} 

{% for tag in blog.getTags() %} 

此外,因为您通过您的博客实体的相应属性得到关联关系的实体必须不参加类别和标签。当您在树枝模板中访问它们时,它们将被代理加载。

我认为它应该是足够的只有BlogCollection传递给视图,然后做

{% for blog in blogs %} 
    {% for tag in blog.tags %} 
     ... 
    {% endfor %} 
{% endfor %} 
+0

我看到我的思维犯错。感谢Markus让我看看blog.tags而不是博客。试图从博客访问它。谢谢。 – Kincsem