Учение 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));