Учение Symfony 2 COUNT

В моей таблице "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. Я хочу только число count, где valideAdmin=1

Спасибо за помощь

2 ответа

Решение

createQueryBuilder()Первый параметр является alias что вы хотите, чтобы ваша сущность взяла (т.е. короткое имя, которое будет использоваться для ссылки на вашу сущность в запросе).

Что вам нужно сделать, это установить правильный псевдоним для вашей сущности (например, a за 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();

Помни что DQL запускает запросы к сущностям. DQL Ваше письмо затем переводится в SQL запросить базовый источник данных после.

Также вы можете получить всю дату, а затем использовать функцию COUNT в PHP. Этот метод имеет преимущество. Вам не нужно использовать сложный запрос. У вас есть вся информация с подсчетом столбцов

$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));
Другие вопросы по тегам