create custom pagination in laravel 7 for api
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
class PaginationController extends Controller
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function index()
{
$myArray = [
['id'=>1, 'title'=>'Laravel 6 CRUD'],
['id'=>2, 'title'=>'Laravel 6 Ajax CRUD'],
['id'=>3, 'title'=>'Laravel 6 CORS Middleware'],
['id'=>4, 'title'=>'Laravel 6 Autocomplete'],
['id'=>5, 'title'=>'Laravel 6 Image Upload'],
['id'=>6, 'title'=>'Laravel 6 Ajax Request'],
['id'=>7, 'title'=>'Laravel 6 Multiple Image Upload'],
['id'=>8, 'title'=>'Laravel 6 Ckeditor'],
['id'=>9, 'title'=>'Laravel 6 Rest API'],
['id'=>10, 'title'=>'Laravel 6 Pagination'],
];
$myCollectionObj = collect($myArray);
$data = $this->paginate($myCollectionObj);
return view('paginate', compact('data'));
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function paginate($items, $perPage = 5, $page = null, $options = [])
{
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
$items = $items instanceof Collection ? $items : Collection::make($items);
return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
}
}
# Blade file
<div class="container">
<table class="table table-bordered">
<tr>
<th>Id</th>
<th>Title</th>
</tr>
@foreach($data as $post)
<tr>
<td>{{ $post->id }}</td>
<td>{{ $post->title }}</td>
</tr>
@endforeach
</table>
</div>
{{ $data->links() }}