2017-03-03 56 views
0

我有一個相當大的表格,大約有100000條記錄。如果我不設置限制在倉庫中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()); 

} 

...查詢和分頁符,雖然我使用的是F:widget.paginate。按照該文檔https://fluidtypo3.org/viewhelpers/fluid/master/Widget/PaginateViewHelper.html我希望我可以通過記錄僅渲染itemsPerPage和 'parginate' ......

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

感謝保羅。我嘗試了@lazy load, - > toArray()並執行(true)...但它仍然中斷。當你問「物體應該多大/多麼複雜?」時...你的意思是我想在每個分頁標籤的列表視圖中顯示多少條記錄?我希望至少有100 ...和子對象? –

0

如果您的問題是性能,只需使用默認的findAll() - Method。

\ TYPO3 \ CMS \ Extbase \ Persistence \ Repository中的內置defaultQuerySettings會根據分頁窗口小部件設置它們的偏移量和限制,如果沒有其他設置。

如果性能問題依然存在,您可能需要考慮爲您的數據庫請求編寫一個自定義查詢,該請求只會請求您的視圖實際顯示的數據。該過程在文檔中描述:https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html