1. Go to this page and download the library: Download companue/auto-paginate library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
companue / auto-paginate example snippets
use App\Http\Controllers\API\AutoPaginatedController;
class YourController extends AutoPaginatedController
{
public function index(Request $request)
{
$query = YourModel::query();
return response()->json(
$this->indexResponse($query, YourResource::class, $request)
);
}
}
use Companue\AutoPaginate\Traits\PaginatesQueries;
class YourController extends Controller
{
use PaginatesQueries;
// Same usage as above
}
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
use Companue\AutoPaginate\Traits\PaginatesQueries;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests, PaginatesQueries;
}
class YourController extends Controller
{
public function index(Request $request)
{
$query = YourModel::query();
return response()->json(
$this->indexResponse($query, YourResource::class, $request)
);
}
}
use Companue\AutoPaginate\Traits\PaginatesQueries;
class Controller extends BaseController
{
use PaginatesQueries;
}
public function index(Request $request)
{
$query = YourModel::query()->orderBy('created_at', 'desc');
return response()->json(
$this->indexResponse($query, YourResource::class, $request)
);
}
public function index(Request $request)
{
$query = YourModel::query();
// Apply filters
if ($request->has('status')) {
$query->where('status', $request->get('status'));
}
// Apply ordering
$query->orderBy('created_at', 'desc');
// Return with automatic pagination
return response()->json(
$this->indexResponse($query, YourResource::class, $request)
);
}
public function index(Request $request)
{
$query = YourModel::query();
// Apply pagination with custom default (20 items per page)
$paginator = $this->applyPagination($query, $request, 20);
return response()->json(
$this->paginatedResponse($paginator, YourResource::class)
);
}
public function index(Request $request)
{
$query = YourModel::query();
// Pass null to return raw data without resource transformation
return response()->json(
$this->indexResponse($query, null, $request)
);
}
public function index(Request $request)
{
// Get and process collection
$items = YourModel::query()
->get()
->map(function($item) {
$item->calculated_field = $item->price * 1.1;
return $item;
});
// Apply pagination to the collection
$paginator = $this->applyPagination($items, $request);
return response()->json(
$this->paginatedResponse($paginator, YourResource::class)
);
}