Basic Usage of Laravel Query Builder
mainUse QueryBuilder::for() to wrap an Eloquent model or query. You must explicitly define which filters, sorts, includes, and fields are allowed to prevent unauthorized query parameters from being processed. Unallowed parameters will throw exceptions by default.
use Spatie\QueryBuilder\QueryBuilder;
use Spatie\QueryBuilder\AllowedFilter;
use Spatie\QueryBuilder\AllowedInclude;
use Spatie\QueryBuilder\AllowedSort;
// GET /users?filter[name]=John&sort=-created_at&include=posts
$users = QueryBuilder::for(User::class)
->allowedFilters('name', 'email')
->allowedSorts('name', 'created_at')
->allowedIncludes('posts', 'permissions')
->allowedFields('id', 'name', 'email')
->get();