Создание пагинации 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 шт):

Автор решения: Vladimir Gonchar

Метод 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' ));
}
→ Ссылка