Liczba wierszy w Doctrine 2
Próbuję pobrać komentarze z komentarza tabeli, który ma identyfikator, grę (klucz obcy) i datę.
Za każdym razem, gdy proszę o komentarze, chcę uzyskać 3 komentarze posortowane według daty dla określonej gry i chcę wiedzieć, czy jest więcej komentarzy do pokazania później. Do tego napisałem dwie funkcje, pierwsza zwraca trzy komentarze:
public function getRecentComments($offset,$id) {
$dql = "SELECT c FROM Comment c
WHERE c.game = ?1
ORDER BY c.date DESC";
$query = $this->getEntityManager()->
createQuery($dql)->
setParameter(1, (int)$id)->
setMaxResults(3)->
setFirstResult($offset);
return $query->getResult();
A drugi zwraca liczbę komentarzy, które mogę uzyskać później. Powodem tej funkcji jest pokazanie przycisku „Więcej komentarzy” lub nie. To druga funkcja:
public function moreComments($offset,$id) {
$dql = "SELECT COUNT(c.id) FROM Comment c
WHERE c.game = ?1
ORDER BY c.date DESC";
$query = $this->getEntityManager()
->createQuery($dql)
->setParameter(1, (int)$idPartido)
->setFirstResult($offset+3)
->setMaxResults(1)
->getSingleScalarResult();
return $query;
}
Ale druga funkcja nie działa w przypadku następnego błędu:
Błąd krytyczny: nieprzechwycony wyjątek „Doctrine ORM NoResultException” z komunikatem „Nie znaleziono wyniku dla zapytania, chociaż oczekiwano co najmniej jednego wiersza.
Które myślę, że to z powodu użycia setFirstResult i count ().
Więc użyłem
public function moreComments($offset,$id) {
$dql = "SELECT c FROM Comentario c
WHERE c.partido = ?1
ORDER BY c.fecha DESC";
$query = $this->getEntityManager()
->createQuery($dql)
->setParameter(1, (int)$idPartido)
->setFirstResult($offset+3)
->setMaxResults(1)
->getSingleScalarResult();
return sizeof($query);
}
Co oczywiście jest źle napisane, ponieważ nie powinienem pobierać danych tylko dla liczby. Jak mogę poprawnie napisać drugą funkcję?
Z góry dziękuję.