2017-07-07 52 views
-1

所以,我有实体,名为Task.php,从中我从数据库中获取所有聊天消息并呈现在当前页面上。在这里我怎么让他们在实体:加载更多的功能symfony 2.8

/** 
* @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); 
} 

后,我使它们在树枝文件,像这样:

{% for a in displayedActivity %} 
... 
{% endfor %} 

现在有限制 - 只有15消息显示在页面上。 而且我需要按钮“加载更多”,每次我按下消息块后会加载另外15次按摩。但我不知道如何做到这一点。

任何帮助将不胜感激。

回答

0

你可以用setFirstResult结合setMaxResults例如:

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

这样,如果你想利用创纪录的30到你需要改变start 45你可以从记录0至15

变量为30.

所以,如果你需要分页,你可以通过pageNumber例如页面= 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); 
+0

那么......我怎样才能从我的树枝模板通过点击一个按钮来调用此方法? – Kir

+0

当我这样做时 - 完全没有发生。似乎setFirstResult()方法被忽略。 – Kir