Symfony 2 Doctrine COUNT

时间:2014-05-31 15:10:46

标签: php symfony doctrine dql

我在我的桌子上#34; Artiste"一栏" valideAdmin"谁取值1或0。

我尝试进行一个简单的计数,以返回表格中的条目数,其中" valideAdmin"是1:

    $repo = $this   ->getDoctrine()
                    ->getManager()
                    ->getRepository('ProjectMainBundle:Artiste');

    $qb = $repo->createQueryBuilder('valideAdmin');
    $qb->select('COUNT(valideAdmin)');
    $qb->where('valideAdmin=1');

    $count = $qb->getQuery()->getSingleScalarResult();

    return array(
        'count' => $count
    );

但它总是" 1"谁回来了......

没有where子句,我有表的条目总数,但是valideAdmin可以是0或1.我只想要valideAdmin = 1的计数数

感谢您的帮助

2 个答案:

答案 0 :(得分:17)

createQueryBuilder()的第一个参数是您希望实体采用的alias(即:用于在查询中引用您的实体的短名称)。

您需要做的是为您的实体设置正确的别名(例如aArtiste),然后COUNT()实体属性<的实例/ strong>(不是列)valideAdmin设置为1:

$repo = $this   ->getDoctrine()
                ->getManager()
                ->getRepository('ProjectMainBundle:Artiste');

$qb = $repo->createQueryBuilder('a');
$qb->select('COUNT(a)');
$qb->where('a.valideAdmin = :valideAdmin');
$qb->setParameter('valideAdmin', 1);

$count = $qb->getQuery()->getSingleScalarResult();

请记住DQL实体上运行查询。然后将您的写入DQL转换为SQL以查询基础数据源。

答案 1 :(得分:0)

您还可以获取所有日期,然后使用 PHP 中的 COUNT 函数 这种方法有一个优势。您不必使用复杂的查询。 您具有计数列的所有信息

$repositoryArtiste = $this->getDoctrine()
            ->getRepository('ProjectMainBundle:Artiste');
        $queryArtiste=   $repositoryArtiste->createQueryBuilder('a')
            ->Where('a.valideAdmin = :valideAdmin')
            ->setParameter('valideAdmin',1)
            ->getQuery();
        $Artiste = $queryArtiste->getResult();
        var_dump(count($Artiste));