(我不知道如何使标题更加清晰-请随意编辑)
我有两张桌子上有葡萄酒和酿酒厂。每种酒都有一家酿酒厂。
如果我想用相应的酿酒厂列出所有葡萄酒的清单,我可以这样做:
$entities = $em->getRepository('MyBundle:Wine')->findAll();
和
{% for entity in entities %}
{{ entity.winery.name }} {{ entity.name }} <br />
{% endfor %}
这个解决方案的问题是,有一个额外的查询,为每一个酒厂,我想防止。
我尝试了在symfony2手册中使用的技术,但是我无法让它工作(它是否只对一个结果起作用?)
通常使用SQL,我只需要做一个LEFT JOIN
,但我不知道如何在Doctrine2中实现这一点。
$qb = $this->createQueryBuilder('w', 'wnr');
$qb->leftJoin('w.winery', 'wnr');
$qb->orderBy('w.name', 'ASC');
$qb->getQuery()->getResult();
???
我会感谢你的帮助!
发布于 2012-01-07 19:38:04
您在DQL查询中选择了酿酒厂吗?
$entities = $em->getRepository('MyBundle:Wine')
->createQueryBuilder('w')
->select('w, wnr')
->leftJoin('w.winery', 'wnr');
->getQuery()
->getResult();
https://stackoverflow.com/questions/8772151
复制相似问题