所以,我有一个名为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个按摩。但我不知道该怎么做。
任何帮助将不胜感激。
答案 0 :(得分:0)
您可以将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);