2015-03-31 56 views
1

我已經使用laravel實現了簡單的分頁。它工作正常。但是,我想添加記錄總數並嘗試使用方法getTotal(),但它返回空值。Laravel Paginator getTotal返回null - 需要所有頁面的總記錄數

$records = DB::table('tablename') 
      ->where(condition) 
      .... 
      .... 
      ->simplePaginate(10); 

在視圖中,添加鏈接工作正常。

{{$records->links();}} 

當我使用,

{{$records->getTotal();}} 

返回null。

如果我使用,

{{$records->count();}} 

它返回的指定網頁記錄的計數。

有什麼見解嗎?

回答

0

這就是simplePaginate的工作原理。從文檔:

如果您只在分頁視圖中顯示「下一個」和「上一個」鏈接,則可以選擇使用simplePaginate方法執行更高效的查詢。當您不需要在視圖上顯示確切的頁碼時,這對於較大的數據集非常有用。

簡單的方法很簡單,因爲它不需要額外的低效率大表count查詢來獲得總數。

+0

謝謝。在那種情況下,最好的方法是什麼。切換到分頁或再次運行整個查詢以獲取計數。?查詢連接近10個表和條件where子句(大約20個字段)來實現搜索功能。 – Chandra 2015-03-31 15:02:08

+0

@Chandra這兩種方法重新運行查詢,所以我會切換到更簡單的代碼分頁。 – ceejayoz 2015-03-31 15:05:58

1

該分頁對象中有方法total()。只需調用該對象。你會得到總數。

例如:$records->total();

0

我有同樣的問題,我所做的就是

$records = DB::table('tablename') 
     ->where(condition) 
     .... 
     .... 
     ->paginate(1); //set as 1 

$total = $records->getTotal(); //get total 

然後返回它像這樣(我使用AJAX,這就是爲什麼我回到它作爲數組):

return Response::JSON(array(
    'pagination'  => (string) $records->links('pagination::simple'), 
    'total_records' => $total 
));