Symfony2 Doctrine 得到全部计数为整数

Symfony2 Doctrine get count all as integer

我想统计数据库中的所有记录。我还没有找到一种推荐的方法来做到这一点。所以我在我的实体回购中建立了这个功能:

public function countAll()
{
    return $this->createQueryBuilder('post')
        ->select('COUNT(post)')
        ->getQuery()->getSingleScalarResult()
        ;
}

没关系,因为它 returns 我计算了所有项目。我使用 FOSRestBundle,所以我在控制器中的操作如下所示:

public function getPostsCountAction() {
    return $this->em->getRepository('KamilTestBundle:Post')->countAll();
}

地址 posts/count.json 的结果看起来像:

"16"

但是...我想将此值取为整数。我不知道为什么 QueryBuilder returns 它作为字符串。即使我使用 ->getQuery()->getResult() 并转储此输出,它也是字符串,而不是整数。

如何将此值取为整数?有可能吗?

intval() 将 return 字符串的数字表示。

虽然使用它可能有点麻烦,但你应该 100% 没问题,因为你知道你只会得到数字。

public function countAll()
{
    return intval($this->createQueryBuilder('post')
        ->select('COUNT(post)')
        ->getQuery()->getSingleScalarResult());
}
return count($this->em->getRepository('KamilTestBundle:Post')->findAll());

这应该 return 一个整数 (count)。

另一种方法是类型转换:

 return (int) $this->em->getRepository('KamilTestBundle:Post')->countAll();

这只会将您的字符串转换为 int,应该比 PHP 中的计数更有效。