Symfony doctrine2:如何从不同的存储库中选择实体

Symfony doctrine2:如何从不同的存储库中选择实体,symfony,doctrine-orm,doctrine,query-builder,Symfony,Doctrine Orm,Doctrine,Query Builder,在我的symfony2/doctrine2应用程序中,用户可以标记引起管理员注意的元素 我需要检索所有标记的元素,因为它们实现了VoteInterface 我正在尝试执行以下操作,但没有成功,因为我需要选择至少一个根实体,所以它不起作用。如果我选择一个根实体,我就有一个内存分配错误 不管怎样,我甚至不确定这是正确的方式。如何选择与投票关联的所有元素?当然,我可以为每种实体类型构建一个querybuilder,但这不是我在这里要实现的,我想要一个查询生成器 public function getF

在我的symfony2/doctrine2应用程序中,用户可以标记引起管理员注意的元素

我需要检索所有标记的元素,因为它们实现了VoteInterface

我正在尝试执行以下操作,但没有成功,因为我需要选择至少一个根实体,所以它不起作用。如果我选择一个根实体,我就有一个内存分配错误

不管怎样,我甚至不确定这是正确的方式。如何选择与投票关联的所有元素?当然,我可以为每种实体类型构建一个querybuilder,但这不是我在这里要实现的,我想要一个查询生成器

public function getFlagsQueryBuilder()
{
    return $this
        ->createQueryBuilder('v')
        ->select('u, c, p')
        ->leftJoin('v.user', 'u')
        ->leftJoin('v.comment', 'c')
        ->leftJoin('v.post', 'p')
        ->groupBy('u, c, p')
        ->addSelect('u, c, p')
        ->where('v.value = ?1')
        ->setParameter(1, 0)
        ;
}

如果内存有问题,可能是因为您同时在内存中加载了太多行

从条令文件中:

它将允许您在没有内存问题的情况下遍历结果。它将在需要时加载行

您还可以使用以下方法查询数量有限的行:

查询::setMaxResults$maxResults

查询::setFirstResult$offset

如果您计划在列上获取COUNT、SUM、AVG或任何其他聚合函数,我建议您进行查询以获取这些函数,而不是从迭代中获取聚合信息。查询会更快


我希望这能有所帮助

谢谢,但我更想弄清楚如何正确编写此查询,以便一次性获取不同的实体。