1

ZF2のほとんどの場合、次のようなページネーターを実行します。

public function fetchAll()
{
 $resultSet = $this->tableGateway->select();
 return $resultSet;
}

$iteratorAdapter = new \Zend\Paginator\Adapter\Iterator($this->getSampleTable()->fetchAll());
$paginator = new \Zend\Paginator\Paginator($iteratorAdapter);

このアプローチの問題は、クエリ結果を制限しておらず、fetchAll がすべての結果を返すことです (db と php の間で大きなトラフィックが発生します)。

純粋な phpでは、次のようなページネーションを行います。

$PAGE_NUM = $_GET['page_num'];
$result_num = mysq_query("SELECT * FROM table WHERE some condition");
$result = mysq_query("SELECT * FROM table WHERE some condition LIMIT $PAGE_NUM, 20");
echo do_paginator($result_num, 20, $PAGE_NUM);//THIS JUST MAKE THE CLASSIC < 1 2 3 4 5 >

これの利点は、mysql の LIMIT オプションのおかげで、ページネーションで必要なデータのみを DB から取得できることです。これは、あまりにも多くのレコードを返すクエリで優れたパフォーマンスを発揮します。

結果に効果的な制限を加えて ZF2 ページネーターを使用できますか、それとも独自のページネーターを作成する必要がありますか?

4

1 に答える 1