我们可以合并条令查询生成器并检索每个查询生成器吗;后果这是最好的做法


Can we merge doctrine querybuilders and retrieve each ones' results ? is that a best practice?

我有一个网站,我在第一个页面上填充了不同性质的对象(最后的帖子、最后的食谱、最后发布的配料)。我目前有一个querybuilder,然后为每个查询都有一个查询,因为我对每个查询调用->getQuery()->getResult()。

在执行查询之前,是否有一种方法可以合并所有这些查询生成器,以便检索由每个查询生成器的结果组成的结果数组?

这会是最好的做法吗?我们该怎么做?

编辑:我希望我们能做什么:

$recipesQueryBuilder = $this->getDoctrine->getRepository('Recipe')->createQueryBuilder('r');
$postsQueryBuilder = $this->getDoctrine->getRepository('Post')->createQueryBuilder('p');
$results = mergeQueryBuilder($recipesQueryBuilder, $postQueryBuilder)->getQuery()->getResult();
$recipes = $results['r'];
$posts = $results['p'];

我对我们的许多查询都这样做。我怀疑这类事情是否有正式的"最佳实践",但我可以保证,重新使用构建器确实简化了代码。例如:

public function getListBuilder(User $user)
{
    return $this->createQueryBuilder('l')->where('l.user = :user')->setParameter('user', $user)->orderBy('l.name');
}

我有许多查询重复使用这个基本构建器。例如:

public function countLists(User $user = null)
{
    $qb = $this->getListBuilder($user);
    return $qb->select('COUNT(l)')->getQuery()->getSingleScalarResult();
}

同样地,另一方法findActiveLists()将顺序改变为createdAt并生成指定了setMaxResults()的查询。