Symfony 2 Doctrine COUNT

Mac*_*nie 4 php doctrine dql symfony

我在我的表"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
    );
Run Code Online (Sandbox Code Playgroud)

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

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

感谢帮助

And*_*ore 17

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

您需要做的是为您的实体设置一个正确的别名(例如afor Artiste),然后COUNT()为您的实体设置属性(而不是列)valideAdmin设置为一个实例:

$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();
Run Code Online (Sandbox Code Playgroud)

请记住,DQL实体运行查询.将DQL那么你写被翻译成SQL之后查询的基础数据源.