PHP code example of companue / auto-paginate

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)
    );
}

$perPage = $request->get('per_page', 15);
$records = YourModel::query()->paginate($perPage);
$items = YourResource::collection($records->items());

return response()->json([
    'data' => $items,
    'pagination' => [
        'current_page' => $records->currentPage(),
        'last_page' => $records->lastPage(),
        // ... more fields
    ]
]);

$query = YourModel::query();

return response()->json(
    $this->indexResponse($query, YourResource::class, $request)
);
bash
php artisan auto-paginate:install
bash
php artisan vendor:publish --tag=auto-paginate-controller
bash
php artisan auto-paginate:install
bash
php artisan auto-paginate:install --base-controller