Работал над этим слишком долго, без каких-либо результатов. Я пытался.
`\Illuminate\Pagination\Paginator::setCurrentPage($current_page);`
возвращает Call to protected method Illuminate\Pagination\Paginator::setCurrentPage()
\Paginator::setCurrentPage($current_page);
возвращает Call to protected method Illuminate\Pagination\Paginator::setCurrentPage()
\DB::getPaginator()->setCurrentPage($current_page);
call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\MySqlConnection' does not have a method 'getPaginator'
$tmp = new Post( ); $tmp->getConnection()->setCurrentPage($current_page);
call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\MySqlConnection' does not have a method 'getPaginator'
Как я могу указать страницу? Мне нужно указать его вручную.
Я надеялся, что это будет так же просто, как $model->find( )->paginate($per_page, $page)
Предположим, у вас есть $users
для разбивки на страницы в UserController
, вы можете:
public function index() { $currentPage = 3; // You can set this to any page you want to paginate to // Make sure that you call the static method currentPageResolver() // before querying users Paginator::currentPageResolver(function () use ($currentPage) { return $currentPage; }); $users = \App\User::paginate(5); return view('user.index', compact('users')); }
Я считаю, что это относится к Laravel 5.0 и выше. Обязательно проверьте это.
Класс Builder имеет:
public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
Вы можете позвонить
Model::find(...)->paginate($per_page, ['*'], 'page', $page);