繁体   English   中英

Symfony2,Doctrine2,具有奇怪结果值的查询生成器?

[英]Symfony2, Doctrine2, query builder with strange result values?

我正在尝试从我的Article对象中选择我的文章,并加入评论作为此文章的评论数。 所以我有这个构建:

$em = $this->getDoctrine()->getManager();
$query = $em->createQueryBuilder()
                ->select('a, COUNT(comments) AS comments_count')
                ->from('AcmeBlogBundle:Article', 'a')
                ->leftJoin('a.comments', 'comments')
                ->groupBy('a.id')
                ->orderBy('a.id', 'DESC');
$articles = $query->getQuery()->getResult();

但是我将尝试在TWIG模板中加载我的文章列表,我将收到此错误:

Key "title" for array with keys "0, comments_count" does not exist in AcmeBlogBundle:Admin:index.html.twig at line 13

我的index.html.twig

  {% for article in articles %}
  <tr>
    <td>{{ article.title }}</td>
    <td><a href="{{ path('default_blog_show', {'slug' : article.slug}) }}">Visit</a> | <a href="{{ path('admin_blog_edit', {'article_id' : article.id}) }}">Edit</a> | <a href="{{ path('admin_blog_delete', {'article_id' : article.id}) }}" onclick="return confirm('Any question...');">Delete</a></td>
  </tr>
  {% endfor %}

但是,查询正常,我在分析器中对其进行了检查:

SELECT 
  a0_.id AS id0, 
  a0_.title AS title1, 
  a0_.slug AS slug2, 
  a0_.content AS content3, 
  COUNT(c1_.id) AS sclr4 
FROM 
  articles a0_ 
  LEFT JOIN comments c1_ ON a0_.id = c1_.article_id 
GROUP BY 
  a0_.id 
ORDER BY 
  a0_.id DESC

如果我试图转储$articles使用\\Doctrine\\Common\\Util\\Debug::dump($articles); 属性,我将得到以下结果:

array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(30) "Acme\BlogBundle\Entity\Article"
    ["comments_count"]=>
    string(1) "0"
  }
}

您知道此查询结果出什么问题吗?

之所以发生这种情况,是因为学说返回了一组值。

在模板中使用它,它应该显示标题:

<td>{{ attribute(article, 0).title }}</td>

编辑:

在您的树枝模板中尝试以下操作:

  {% for item in articles %}
  {% set article = item[0] %}
  {% set comment_count = item['comments_count'] %}
  <tr>
    <td>{{ article.title }}</td>
    <td><a href="{{ path('default_blog_show', {'slug' : article.slug}) }}">Visit</a> | <a href="{{ path('admin_blog_edit', {'article_id' : article.id}) }}">Edit</a> | <a href="{{ path('admin_blog_delete', {'article_id' : article.id}) }}" onclick="return confirm('Any question...');">Delete</a></td>
  </tr>
  {% endfor %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM