Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
# Query string conventions # GET /products?status=active&category=shoes&minPrice=50&maxPrice=200 # GET /products?sort=price&order=desc # GET /products?page=3&perPage=25 (offset-based) # GET /products?cursor=eyJpZCI6MTAwfQ&limit=25 (cursor-based) # Laravel implementation with Spatie QueryBuilder use Spatie\QueryBuilder\QueryBuilder; use Spatie\QueryBuilder\AllowedFilter; public function index(Request $request): JsonResponse { $products = QueryBuilder::for(Product::class) ->allowedFilters([ 'status', 'category.name', AllowedFilter::scope('price_between'), ]) ->allowedSorts(['price', 'name', 'created_at']) ->allowedIncludes(['category', 'images']) ->paginate($request->input('perPage', 20)); return response()->json([ 'data' => $products->items(), 'meta' => [ 'currentPage' => $products->currentPage(), 'perPage' => $products->perPage(), 'total' => $products->total(), 'lastPage' => $products->lastPage(), ], 'links' => [ 'first' => $products->url(1), 'last' => $products->url($products->lastPage()), 'prev' => $products->previousPageUrl(), 'next' => $products->nextPageUrl(), ], ]); }
Result
Open