Количество рядов в Учении 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);
}
Что явно плохо написано, потому что я не должен получать данные только для подсчета. Как я мог написать вторую функцию правильно?
Заранее спасибо.