Anzahl der Zeilen in Lehre 2

Ich versuche, Kommentare aus einer Tabelle abzurufen. Kommentar mit ID, Spiel (Fremdschlüssel) und Datum.

Jedes Mal, wenn ich nach Kommentaren frage, möchte ich 3 Kommentare erhalten, die nach Datum für ein bestimmtes Spiel sortiert sind, und ich möchte wissen, ob später weitere Kommentare angezeigt werden sollen. Dafür habe ich zwei Funktionen geschrieben, die erste gibt die drei Kommentare zurück:

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();

Und der zweite gibt die Anzahl der Kommentare zurück, die ich später erhalten könnte. Der Grund für diese Funktion ist, ob eine Schaltfläche "Weitere Kommentare" angezeigt wird oder nicht. Dies ist die zweite Funktion:

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;
}

Aber die zweite Funktion funktioniert nicht für den nächsten Fehler:

Schwerwiegender Fehler: Nicht erfasste Ausnahme 'Doctrine \ ORM \ NoResultException' mit der Meldung 'Es wurde kein Ergebnis für die Abfrage gefunden, obwohl mindestens eine Zeile erwartet wurde.

Was ich denke, es liegt an der Verwendung von setFirstResult und count ().

Also habe ich benutzt

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);
}

Was offensichtlich schlecht geschrieben ist, weil ich die Daten nicht nur für eine Zählung bekommen sollte. Wie könnte ich die zweite Funktion richtig schreiben?

Danke im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage