Я работаю над простым API в Laravel 5 и хочу сделать нумерацию страниц из-за большого количества данных в базе данных.
Это метод, который вызывается по запросу GET для маршрута api / v1 / words
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)
Что я делаю неправильно?
$words
является Illuminate\Pagination\Paginator
объект (см. документацию Вот).
Вы вызвали метод, который не принадлежит
Paginator
учебный классCollection
доступ через динамический вызов (см. также документацию Вот).Изучение / исследование тщательно Документация, чтобы знать правильное написание методов, которые вам нужны.
подсказки:
Других решений пока нет …