2014-05-12 64 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