2017-03-03 7 views
0

私は約100000レコードのかなり大きなテーブルを持っています。 widget.paginate:私はFを使用していますが、クエリや改ページ...TYPO3 Extbase - 大きなテーブル(100000レコード)のページ番号

public function paginateRequest() { 

$query = $this->createQuery(); 
$result = $query->setLimit(1000)->execute(); 
//$result = $query->execute(); 
return $result; 

} 

/** 
* action list 
* 
* @return void 
*/ 
public function listAction() { 

$this->view->assign('records', $this->leiRepository->paginateRequest()); 

//$this->view->assign('records', $this->leiRepository->findAll()); 

} 

:私は、リポジトリ

リポジトリに上限を設定しない場合。私はレコードをのみitemsPerPageと 'parginate' をレンダリングすることができることを期待していたドキュメントhttps://fluidtypo3.org/viewhelpers/fluid/master/Widget/PaginateViewHelper.htmlあたりとして...

List.hmtl

<f:if condition="{records}"> 
<f:widget.paginate objects="{records}" as="paginatedRecords" configuration="{itemsPerPage: 100, insertAbove: 0, insertBelow: 1, maximumNumberOfLinks: 10}">      
    <f:for each="{paginatedRecords}" as="record"> 
     <tr> 
      <td><f:link.action action="show" pageUid="43" arguments="{record:record}"> {record.name}</f:link.action></td> 
      <td><f:link.action action="show" pageUid="43" arguments="{record:record}"> {record.lei}</f:link.action></td> 
     </tr> 
    </f:for> 
</f:widget.paginate> 

モデル:

クラスLeiは¥TYPO3¥CMS¥Extbase¥DomainObject¥AbstractEntity {

... 
/** 
* lei 
* 
* @lazy 
* @var string 
*/ 
protected $lei = ''; 
... 

答えて

0

ページめくりをするオブジェクトの大きさ/複雑度はどれくらいですか?リストビューで必要としないサブオブジェクトがある場合は、モデル内のリレーションに@lazyアノテーションを追加します。

このように大量のレコードがあるため、リストビューでできるだけシンプルに保つ必要があります。 $this->leiRepository->findAll()->toArray()を使用してリストビューに結果を配列として渡したり、リポジトリから生の結果だけを返して実行するにはtrueを追加します(true)。

コントローラ内のforeach内でリストアイテムの配列を作成し、実際に必要なプロパティのみをリスト内に追加することもできます。

+0

ありがとうPaul。私は@lazyロードを試みました - > toArray()と(true)を実行...しかし、それはまだ壊れます。あなたは、どのように大規模/複雑なオブジェクトをすべきかを尋ねると、 ...ページビューごとにリストビューで表示するレコードの数はどれくらいですか?私は少なくとも100を望む...そして、サブオブジェクトによって? –

0

問題がパフォーマンスの場合は、デフォルトのfindAll() - メソッドを使用してください。

\ TYPO3 \ CMS \ Extbase \ Persistence \ Repositoryに組み込まれているdefaultQuerySettingsは、ページ設定ウィジェットに基づいてオフセットと制限を設定します(設定されていない場合)。

パフォーマンス上の問題が解決しない場合は、データベース要求のカスタムクエリを作成することを検討する必要があります。このクエリは、実際に表示されるデータのみを要求します。このプロセスはドキュメントに記載されています。https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html

関連する問題