Apply Request Filters (Builder Macro)
The package extends Laravel's Illuminate\Database\Query\Builder with a macro applyRequestFilters. This is the same filtering/pagination mechanism used by the record CRUD endpoints when listing records.
php
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
public function index(Request $request)
{
// Start with any base query
$query = DB::table('invoices')->where('active', true);
// Apply filters from request (e.g. ?status=eq.paid&sortby=created_at)
$result = $query->applyRequestFilters($request);
return response()->json($result);
}The applyRequestFilters method returns an array containing:
data: The result setmeta: Pagination metadataheaders: Response headersfilters: Applied filtersrequest: Original request objectcursor_meta: Cursor pagination metadata (if applicable)
Builder macro signature:
php
public function applyRequestFilters(
\Illuminate\Http\Request $request,
bool $isArray = false,
string $orderBy = 'id',
?string $tenantColumn = ''
): arrayBecause the macro has named parameters, you can also call it using named arguments (PHP 8+):
php
$result = DB::table('invoices')->applyRequestFilters(
request: $request,
isArray: true,
orderBy: 'created_at',
tenantColumn: 'company_id',
);Related Docs
- Standard CRUD Operations — the same filter/sort/pagination syntax
- QueryHelpers Trait — the Eloquent-only trait for custom ORM endpoints
- Pagination Module