правильное использование метода пагинации Ларавела? - PullRequest
0 голосов
/ 08 мая 2018

Когда я использую метод paginate со следующим утверждением:

$user = User::where('id', 1)->first();
$images = $user->images->paginate(3);

Я получаю следующую ошибку:

Метод Осветить \ База данных \ Eloquent \ Collection :: paginate не есть

Однако, когда я звоню со следующим утверждением:

$images = Image::where('user_id', $user->id)->paginate(3);

Это работает соответственно ... Я довольно новичок в Laravel, так что простите мое невежество, но в чем причина разницы в результатах? Разве оба заявления не возвращают коллекции?

1 Ответ

0 голосов
/ 08 мая 2018

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

$imagesPage = new LengthAwarePaginator($user->images->forPage($page,3), $user->images->count(), 3, $page); //Where $page is the current page number

Кроме того, вы можете разбить построитель запросов на страницы:

$images = $user->images()->paginate(3); 

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

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