Создание пагинации Laravel
У меня есть два вывода пользовательских таблиц. Мне нужно выводить новых юзеров в первой колонке
Во втором колонке - по рейтингу и расположите в порядке убывания, а также сделайте разбивку на страницы
Вот что я сделал
public function __invoke()
{
$users = Server::take(2);
$topUsers = Server::withCount('topServersUser')->
orderBy('top_user_count','DESC')->get()->paginate(3);
return view('main.index', compact('users', 'topUsers' ));
}
Но она не работает и выдает ошибку
Method Illuminate\Database\Eloquent\Collection::paginate does not exist.
для $user мне нужно сделать вывод новых созданных участниках
а для $topUsers вывод идет по убыванию и по рейтингу. И сделайте ту же разбивку на страницы
Чтобы в итоге в index.blade.php я написал {{ $topUsers->links() }} и была pagination
Помогите решить проблему, как ее реализовать?
Ответы (1 шт):
Метод get() и paginate() несовместимы. get() отдает массив коллекций уже. paginate() тоже отдает массив коллекций, но ограниченно по страницам. Когда Вы пытаетесь применять paginate() на get(), в этот момент уже нет методов модели, а только коллекции — появляется ошибка об отсутствии метода.
Поэтому если хотите получать страницы — пишите только paginate():
public function __invoke()
{
$users = Server::take(2);
$topUsers = Server::withCount('topServersUser')
->orderBy('top_user_count','DESC')->paginate(3);
return view('main.index', compact('users', 'topUsers' ));
}