1
我試圖從我的文章對象中選擇我的文章,並加入評論作爲本文的評論數。所以我有這個版本:Symfony2,Doctrine2,具有奇怪結果值的查詢生成器?
$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();
但我會嘗試加載在我的嫩枝模板我的文章列表中,我會得到這個錯誤:
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 %}
但是,查詢是OK的,我檢查了它在我的探查:
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
如果我嘗試使用\Doctrine\Common\Util\Debug::dump($articles);
財產傾倒$articles
,我會得到這樣的結果:
array(1) {
[0]=>
array(2) {
[0]=>
string(30) "Acme\BlogBundle\Entity\Article"
["comments_count"]=>
string(1) "0"
}
}
任何想法,與此查詢結果的問題?
是它的工作原理,但爲什麼它有這些不是很漂亮的值?有沒有什麼辦法,使這個查詢更好的結果沒有任何「魔法」? (如article.title,article.comments_count) –
在您的編輯中 - 類型爲「Acme \ BlogBundle \ Entity \ Article」的對象(含ArrayAccess)中的鍵「1」在AcmeBlogBundle中不存在:Admin:index.html.twig at第13行 –
如果您沒有單獨的文章和評論實體,並且它們之間存在一對多關係,則不需要。然後你可以使用count($ article-> getComments()),因爲getComments()可以返回一系列評論實體。 – Udan