Предположим, у меня есть Post модель. Сделать нумерацию страниц:
$posts = Post::paginate(10);
В шаблоне я могу проверить, является ли текущая страница первой:
@if($posts->currentPage()==1)
// here before the posts display something else on the first page
// ...
@endif
Затем отобразите заголовки сообщений с их изображением и описанием:
@foreach($posts as $post)
<div>{{ $post->img }}<\div>
<div>{{ $post->title }}<\div>
<div>{{ $post->description }}<\div>
@endforeach
Чтобы первая страница не была перегружена и быстро загружена, мне нужно сделать на ней 4 сообщения, а не 10, как на других страницах.
Мне нужно, чтобы от 5 до 10 постов были на второй странице и не потерялись. То есть мне нужно вычесть количество постов из смещения , в данном случае это 6 на всех страницах, кроме первой. Я не знаю, как редактировать смещение .
paginate () вызывает метод из класса Illuminate \ Database \ Eloquent \ Builder , где метод forPage () из Illuminate \ База данных \ Query \ Builder называется. Он вызывает метод skip () , который изменяет смещение . Здесь трудность состоит в том, что я не знаю, как передать свой параметр $ delta_offset = 6 в этот метод, что бы исправить смещение ? В конце концов, пакеты в поставщике не меняются ... Я подумал, что могу унаследовать от класса Illuminate \ Database \ Eloquent \ Builder и создать собственный метод разбивки на страницы в своем классе для передачи параметра, но в этом случае я не могу использовать свой метод на модели следующим образом:
$posts = Post::myPaginate(10);
ORM в этом случае ищет метод myPaginate () в классе Подсветка \ База данных \ Запрос \ Builder .