因此,我有一个名为Task.php的实体,我从数据库中获取所有聊天消息并呈现在当前页面上。下面是我如何在实体中获取它们:
/**
* @return \Doctrine\Common\Collections\Collection|static
*/
public function getDisplayedActivity()
{
$limit = 15;
$criteria = Criteria::create();
$criteria->orderBy(['createdAt' => 'DESC']);
$criteria->setMaxResults($limit);
$criteria->where(Criteria::expr()->isNull('parent'));
return $this->activity->matching($criteria);
}在我将它们渲染成twig文件后,如下所示:
{% for a in displayedActivity %}
...
{% endfor %}现在有限制-一个页面上只有15条消息显示。我需要“加载更多”按钮,这将加载另外15个消息块末尾的消息,每次我将按下它。但我不知道该怎么做。
任何帮助都将不胜感激。
发布于 2017-07-07 23:18:55
您可以将setMaxResults与setFirstResult结合使用,例如:
$start = 0;
$limit = 15;
$criteria = Criteria::create();
$criteria->orderBy(['createdAt' => 'DESC']);
$criteria->setFirstResult($start);
$criteria->setMaxResults($limit);
$criteria->where(Criteria::expr()->isNull('parent'));
return $this->activity->matching($criteria);这样你就可以从记录0到15
如果您希望记录从30到45,则需要将start变量更改为30。
因此,如果需要分页,可以传递pageNumber,例如page=1
$page = 1;
$limit = 15;
$start = ($page * limit) - $limit;
$criteria = Criteria::create();
$criteria->orderBy(['createdAt' => 'DESC']);
$criteria->setFirstResult($start);
$criteria->setMaxResults($limit);
return $this->activity->matching($criteria);https://stackoverflow.com/questions/44974263
复制相似问题