Как сделать пагинацию в Laravel? метод paginate не существует - PullRequest
0 голосов
/ 15 мая 2019

Попытка получить последнюю задачу для каждого пользователя, поэтому, если есть 100 пользователей, я хочу, чтобы на странице отображалось только 10, но это не сработает.При добавлении метода paginate я получаю следующую ошибку:

Метод Illuminate \ Database \ Eloquent \ Collection :: paginate не существует.

Если удалить метод, все работает нормально, я получаюожидаемые результаты, я просто хочу разбить на страницы.Это мой код:

$users = User::with('latestTask')->get()->paginate(10);

Ответы [ 4 ]

0 голосов
/ 15 мая 2019

Хотя другие ответы верны, я хотел бы указать причину этого ...

get() выполняет запрос и возвращает коллекцию, что означает, что вы больше не строите / не изменяете запрос sql

paginate() следует вызывать для самого простого запроса перед его выполнением, чтобы он мог добавить к запросу смещение и предел ...

Вот почему он должен быть

$users = User::with('latestTask')->paginate(10);

Вы можете увидеть в ошибке, что Illuminate\Database\Eloquent\Collection метод paginate не существует, поскольку paginate не является частью коллекции

Цитирование документации laravel https://laravel.com/docs/5.8/pagination

ТамЕсть несколько способов разбить элементы на страницы.Самый простой способ - использовать метод paginate в & построителе запросов или Eloquent запрос

0 голосов
/ 15 мая 2019

Вы не можете разбивать на страницы коллекцию

$users = User::with('latestTask')->get();

, чтобы разбить на страницы, вы должны использовать метод paginate () для Eloquent результатов:

$users = User::with('latestTask')->paginate(10);

и затем в поле зрения поставить ссылку:

{{ $users->links() }}
0 голосов
/ 15 мая 2019

Когда вы используете paginate, вам не нужно использовать get () .просто следуйте приведенному ниже коду:

$users = User::with('latestTask')->paginate(10);

Модель пользователя автоматически обработает запрос и получит количество данных, заданных как аргумент в методе paginate($number_of_rows).

вы также можете использовать orderBy () в качестве формата цепочки методов, как показано ниже.

$users = User::with('latestTask')->orderBy($column,'asc')->paginate(10);
0 голосов
/ 15 мая 2019

Вам нужно вызвать метод напрямую, без использования get()

$users = User::with('latestTask')->paginate(10);

и в своем блейде вы можете получить ссылки на страницы, используя

$variable_name->links()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...