$em = $this->getDoctrine()->getEntityManager();
$qb = $em->createQueryBuilder();

$tickets = $qb->select('COUNT(ticket.id)')->from('MyBundle:Ticket', 'ticket');
var_dump($tickets->getQuery()->getSingleScalarResult());

Zwroty

array(1) {
  [0]=>
  array(1) {
    [1]=>
    string(3) "125"
  }
}

Ale w bazie danych jest tylko 5 wpisów. Jakieś pomysły, co jest nie tak?

var_dump($tickets->getQuery()->getSql());

Daje

SELECT COUNT(t0_.id) AS sclr0 FROM bilet t1_, bilet t2_, bilet t0_ GROUP BY t0_.id ZAMÓWIENIE BY t2_.created_at ASC LIMIT 1

1
Upvote 17 październik 2012, 15:43

2 odpowiedzi

Najlepsza odpowiedź

W rzeczywistości przed tym zapytaniem były jeszcze dwa zapytania korzystające z tej samej instancji konstruktora zapytań. To może być problem. Usuwam zapytania, a teraz zapytanie zliczające działa dobrze.

0
Upvote 18 październik 2012, 09:17

Możesz spróbować jako:

$em = $this->getDoctrine()->getEntityManager();
$query = "SELECT count(s) FROM MyBundle:Ticket s ";
$queryObj = $em->createQuery($query);
$result = $queryObj->execute();

Nie testowałem tego kodu. Ale to powinno działać.

0
Ankit Chauhan 17 październik 2012, 17:04