我正在尝试从具有 id、游戏(外键)和日期的表 Comment 中检索评论。
每次我要求评论时,我都想获得 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();
第二个返回我以后可以得到的评论数量。此功能的原因是是否显示“更多评论”按钮。这是第二个功能:
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' 带有消息 'No result was found for query 尽管预期至少有一行。
我认为这是由于使用了 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);
}
这显然写得不好,因为我不应该只为计数而获取数据。我怎样才能正确编写第二个函数?
提前致谢。