Количество рядов в Учении 2

Я пытаюсь получить комментарии из таблицы «Комментарий», в которой есть идентификатор, игра (внешний ключ) и дата.

Каждый раз, когда я прошу комментарии, я хочу получить 3 комментария, отсортированных по дате для определенной игры, и я хочу знать, есть ли еще комментарии, чтобы показать позже. Для этого я написал две функции, первая возвращает три комментария:

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

А второй возвращает количество комментариев, которые я мог получить позже. Причина этой функции заключается в том, что мы показываем кнопку & quot; Другие комментарии & quot; или нет. Это вторая функция:

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

Но вторая функция не работает для следующей ошибки:

Неустранимая ошибка: неучтенное исключение "Doctrine \ ORM \ NoResultException" с сообщением "Не найдено результатов по запросу, хотя ожидалась хотя бы одна строка.

Что я думаю, это связано с использованием setFirstResult и count ().

Итак, я использовал

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

Что явно плохо написано, потому что я не должен получать данные только для подсчета. Как я мог написать вторую функцию правильно?

Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос