Для этого доступно несколько подходов.
Метод 1:
Для разбиения на страницы в коллекции Laravel предоставляет метод, называемый forPage
https://laravel.com/api/master/Illuminate/Support/Collection.html#method_forPage
Попробуйте следующий метод, и, возможно, это то, что вы ищете.
return $this->getCountPost()->forPage(1, 10);
Для этого сценария вам придется придумать свою собственную логику, чтобы добавить ссылки на страницы.
однако, следующий подход облегчит жизнь.
Метод 2:
Использование Laravel's LengthAwarePaginator
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
use App\Http\Requests;
class ItemsController extends Controller
{
public function items(Request $request)
{
$items = [
'item1',
'item2',
'item3',
'item4',
'item5',
'item6',
'item7',
'item8',
'item9',
'item10'
];
// Get current page form url e.x. &page=1
$currentPage = LengthAwarePaginator::resolveCurrentPage();
// Create a new Laravel collection from the array data
$itemCollection = collect($items);
// Define how many items we want to be visible in each page
$perPage = 1;
// Slice the collection to get the items to display in current page
$currentPageItems = $itemCollection->slice(($currentPage * $perPage) - $perPage, $perPage)->all();
// Create our paginator and pass it to the view
$paginatedItems= new LengthAwarePaginator($currentPageItems , count($itemCollection), $perPage);
// set url path for generted links
$paginatedItems->setPath($request->url());
return view('items_view', ['items' => $paginatedItems]);
}
И на блейд-файле
<h1>Items List</h1>
<ul>
@foreach ($items as $item)
<li> {{ $item }} </li>
@endforeach
</ul>
<div>
{{ $items->links() }}
</div>
Ссылка: https://arjunphp.com/laravel-5-pagination-array/