Symfony2 - 无法从ManyToMany关系访问标签

时间:2014-05-12 07:16:35

标签: symfony doctrine-orm tags twig

我目前在Tag实体和Blog实体之间存在ManyToMany / 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,
    );
}

1 个答案:

答案 0 :(得分:2)

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

{% for tag in blog.tags %}

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

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

我认为只应将BlogCollection传递给视图,然后执行

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