2017-07-07 13 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のマッサージをロードするボタン "Load More"が必要です。しかし、私はこれをどうやって行うのか分かりません。

ご協力いただければ幸いです。

答えて

0

あなたは、例えばsetFirstResultsetMaxResultsを組み合わせることができます

$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から45にレコードを取るしたい場合は、変更する必要があるレコードを0から15

に連れて行くことができますstart変数を30に設定します。

ページ番号を渡すことができる場合は、例: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); 
+0

まあ...ボタンをクリックして、私の小枝のテンプレートからこのメソッドを呼び出す方法はありますか? – Kir

+0

私はこのようにしています - 完全に何も起こりません。setFirstResult()メソッドは無視されます。 – Kir

関連する問題