2015-04-17 51 views
1

我正在Laravel 5中處理簡單的API,並且我想要分頁,因爲數據庫中的大量數據。Laravel API分頁ErrorException

這方法被稱爲對GET請求路由API/V1 /詞

public function index() 
    { 
     //$words = Word::all(); 
     $limit = Input::get('limit') ?: 3; 
     $words = Word::paginate($limit); 
     //dd(get_class_methods($words)); 
     return $this->respondWithPagination($words); 
    } 
        . 
        . 
        . 

    public function respondWithPagination($words) 
    { 
     return $this->respond([ 
      'words' => $this->wordTransformer->transformCollection($words->all()), 
      'paginator' => [ 
       'totalCount' => $words->getTotal(), 
       'totalPages' => ceil($words->getTotal()/$words->getPerPage()), 
       'currentPage' => $words->getCurrentPage(), 
       'limit' => $words->getPerPage(), 
       'previousPageUrl' => $words->previousPageUrl(), 
       'nextPageUrl' => $words->nextPageUrl() 
      ] 
     ]); 
    } 

但我的日誌給我這個錯誤:

[2015-04-17 09:50:28] local.ERROR: exception 'ErrorException' with message 'call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\Eloquent\Collection' does not have a method 'getTotal'' in /home/vagrant/Code/zadarplus2/vendor/laravel/framework/src/Illuminate/Pagination/AbstractPaginator.php:463 
    Stack trace: 
    #0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'call_user_func_...', '/home/vagrant/C...', 463, Array) 
    #1 /home/vagrant/Code/zadarplus2/vendor/laravel/framework/src/Illuminate/Pagination/AbstractPaginator.php(463): call_user_func_array(Array, Array) 
    #2 /home/vagrant/Code/zadarplus2/app/Http/Controllers/WordController.php(90): Illuminate\Pagination\AbstractPaginator->__call('getTotal', Array) 
    #3 /home/vagrant/Code/zadarplus2/app/Http/Controllers/WordController.php(90): Illuminate\Pagination\LengthAwarePaginator->getTotal() 
    #4 /home/vagrant/Code/zadarplus2/app/Http/Controllers/WordController.php(43): App\Http\Controllers\WordController->respondWithPagination(Object(Illuminate\Pagination\LengthAwarePaginator)) 
    #5 [internal function]: App\Http\Controllers\WordController->index() 
    #6 /home/vagrant/Code/zadarplus2/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(246): call_user_func_array(Array, Array) 

我在做什麼錯?

回答

1

$wordsIlluminate\Pagination\Paginator對象(請參閱文檔here)。

你叫不屬於

  • 既不給Paginator
  • 也不是通過動態調用訪問其基礎Collection的方法(見文檔here)。

探索/研究徹底文件知道您需要的方法的正確拼寫。


提示:

  • count():獲取項目的數量爲(Paginator)當前頁面(reference)。
  • count():計算(相關)Collectionreference)中的項目數。
+1

謝謝,現在好了,我知道我一直在尋找Laravel 4.1文檔,而不是Laravel 5.還'DD(get_class_method(0函數$字));'表明沒有getTotal()方法 – tuna

+0

很樂意幫助你; - ) – menjaraz