Doctrine 2在getSIngleScalarResult上抛出NonUniqueResultException

时间:2014-09-10 06:16:49

标签: symfony doctrine-orm doctrine-query

我使用查询构建器创建了一个查询,现在我想知道结果中有多少条记录但是由于某种原因它会抛出我NonUniqueResultException

这是代码

    $VideoQueueRepo = $this->_EntityManager->getRepository("TestTestAppBundle:VideoQueue");
    $VideoQueue  = $VideoQueueRepo->createQueryBuilder('VQ')
                                     ->where("VQ.reviewStatus = :ReviewStatus")
                                     ->setParameter('ReviewStatus', VideoConstants::STATUS_NEW)
                                     ->getQuery();
    $VideoQueueCount = $VideoQueue->getSingleScalarResult();

我无法做到这一点($ VideoQueue-> getResult());因为结果中有大约50 000条记录,并且每个请求都被取消了,我在symfony日志中得到了这个

 emergency.EMERGENCY: Allowed memory size of 134217728 bytes exhausted (tried to allocate 87 bytes)

如何获得结果中的记录数?

1 个答案:

答案 0 :(得分:2)

如果您的查询导致多行,则会引发NonUniqueResultException。如果您有许多状态为新的视频队列,则情况就是这样。

使用新写状态计算您的项目

$VideoQueue = $VideoQueueRepo->createQueryBuilder('VQ')
                             ->select('COUNT(VQ)')
                             ->where("VQ.reviewStatus = :ReviewStatus")
                             ->setParameter('ReviewStatus', VideoConstants::STATUS_NEW)
                             ->getQuery();