【问题标题】:Symfony2 - Trouble accessing tags from a ManyToMany relationshipSymfony2 - 从多对多关系访问标签时遇到问题
【发布时间】:2014-05-12 07:16:35
【问题描述】:

我目前在标签实体和博客实体之间存在多对多/多对多关系。

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

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

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

当我尝试使用以下内容访问 twig 中的标签时:

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

【问题讨论】:

    标签: symfony doctrine-orm tags twig


    【解决方案1】:

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

    {% for tag in blog.tags %}
    

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

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

    我认为只将一个 BlogCollection 传递给视图然后做就足够了

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

    【讨论】:

    • 我看到了我的想法的错误。感谢 Markus 向我展示了循环 blog.tags 而不是 blog。试图从博客访问它。谢谢。
    猜你喜欢
    • 2014-06-28
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2017-12-01
    • 2016-05-12
    • 1970-01-01
    相关资源
    最近更新 更多