2017-02-08 10 views
1

Здравствуйте, я новичок в Symfony быть снисходительным плз, вот мой кодКак вернуть мой последний отсчет ID QueryBuilder

public function countTicket() 
{ 
    $qb = $this 
     ->createQueryBuilder('t') 
     ->innerJoin('t.visitors', 'v') 
     ->Select("count(v.id)") 
     ->where('t.visitDate IS NOT NULL') 
     ->groupBy('t.visitDate') 

    ; 

    return $qb 
     ->getQuery() 
     ->getScalarResult(); 
} 

Когда я дамп countTicket() возвращает все сущности моего идентификаторам, группы во всех visitDate, которые это нормально, но я просто хочу вернуть счет (v.id) из последнего посещения, которое я отправляю, и я не знаю, как это сделать.

Благодарим за помощь.

ответ

0

Вы должны использовать getSingleScalarResult() вместо getScalarResult() и ограничить запрос для извлечения последнего результата только, как это:

public function countTicket() 
{ 
    return $this 
     ->createQueryBuilder('t') 
     ->innerJoin('t.visitors', 'v') 
     ->select('count(v.id)') 
     ->where('t.visitDate IS NOT NULL') 
     ->orderBy('t.visitDate', 'desc') 
     ->groupBy('t.visitDate') 
     ->setMaxResults(1) 
     ->getQuery() 
     ->getSingleScalarResult(); 
} 
+0

спасибо за ответ, поэтому я попытался с getSingleScalarResult(), но у меня есть ошибки он говорит: «Запрос возвращал несколько строк. Измените запрос или используйте другую функцию результата, например getScalarResult()». –

+0

@ b.w Я только что обновил код. Если вы хотите только последнюю запись, вы должны ограничить запрос, тогда 'getSingleScalarResult()' будет работать. – lsouza

+0

Я не знаю, где я ошибся, но он возвращает первую запись. –