Symfony 具有关联且没有延迟加载的后加载实体?

Symfony 具有关联且没有延迟加载的后加载实体?,symfony,doctrine-orm,Symfony,Doctrine Orm,这是我的pb 我有一个实体游戏和一个实体控制台 这是一个众多的关联 为了提高性能,我在同一查询中加载游戏和控制台,如下所示: $this->_em->getRepository('MyBundle:Console') ->createQueryBuilder('console') ->join('console.game', 'game') ->select('game', 'console') -&g

这是我的pb

我有一个实体游戏和一个实体控制台
这是一个众多的关联

为了提高性能,我在同一查询中加载游戏和控制台,如下所示:

$this->_em->getRepository('MyBundle:Console')
        ->createQueryBuilder('console')
        ->join('console.game', 'game')
        ->select('game', 'console')
        ->getQuery()->getResult();
当我使用
$console->getGames()
显示所有游戏而不执行任何查询时

当我使用postLoad事件时,每个
$console->getGames()
执行查询,因为该事件在对象完全水合之前开始

在条令网站上,我发现了以下建议:

“请注意,当使用条令\ORM\AbstractQuery#iterate()时,postLoad 事件将在物体水合后立即执行, 因此,关联不能保证被初始化 将条令\ORM\AbstractQuery#iterate()和 后加载事件处理程序。“

所以,有人知道如何使用加载后事件和完整的水合实体?我不想偷懒


但这不是我的情况

在2.5条原则中,这种行为实际上发生了变化。从2.5开始,所有关联都应在postLoad事件中加载。原则2.5应解决您的问题,参考:


不清楚您的问题是什么,我编辑了我的帖子:所以,有人知道如何使用完整水合实体的postLoad事件吗?首先在您的查询中添加->选择('console,game'),因为按照当前编写的方式,您的查询仍然延迟加载游戏。然后可能会用一个问题更新你的问题。我忘了在帖子中添加select,但我已经将它添加到了我的项目中。这就是postLoad的工作方式。您必须循环查看结果并发送自己的事件。