Doctrine加入绕过延迟加载

时间:2012-07-25 21:47:48

标签: join orm symfony doctrine

我刚刚开始探索Symfony2,我很惊讶它有多少很棒的功能。我开始做博客教程: http://tutorial.symblog.co.uk/
但使用版本2.1而不是2.0

我的问题是我有以下实体用于Blog:

/**
 * @ORM\OneToMany(targetEntity="Comment", mappedBy="blog")
 */
protected $comments;

以及评论实体中的以下内容:

/**
 * @var string $blog
 *
 * @ORM\ManyToOne(targetEntity="Blog", inversedBy="comments")
 * @ORM\JoinColumn(name="blog_id", referencedColumnName="id")
 */
private $blog; 

我创建了获取最新博客的功能并加入了评论,因此我不必为每个博客添加延迟加载评论,并避免多次调用评论表,如下所示:

$qb = $this->createQueryBuilder('b')
            ->select('b')
            ->leftJoin('b.comments', 'c')
            ->addOrderBy('b.created', 'DESC'); 

但是当我在twig模板中运行时,该查询的结果为:blog.comments我得到了第一个查询来检索博客是否正确加入其中但是然后我没有使用连接值来获取评论为每个博客条目调用评论表?如何绕过该特定情况的功能,但保持关系,以便我可以从视图博客页面获取博客的所有评论?

1 个答案:

答案 0 :(得分:8)

您还需要将注释对象添加到选择结果中:

->select('b', 'c')