adesin-fr / laravel-query-builder-table-filters
Advanced Spatie Laravel Query Builder filters for Vue query builder tables.
Package info
github.com/Adesin-fr/laravel-query-builder-table-filters
pkg:composer/adesin-fr/laravel-query-builder-table-filters
Requires
- php: ^8.2
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
- nesbot/carbon: ^2.0|^3.0
- spatie/laravel-query-builder: ^5.0|^6.0
This package is not auto-updated.
Last update: 2026-08-10 10:47:18 UTC
README
Small Laravel package containing only Spatie Query Builder helpers required by the Vue table package.
It has no Inertia dependency and does not render frontend configuration.
Install
composer require adesin-fr/laravel-query-builder-table-filters
Filters
use AdesinFr\LaravelQueryBuilderTableFilters\AllowedDateFilter; use AdesinFr\LaravelQueryBuilderTableFilters\AllowedNumberFilter; use AdesinFr\LaravelQueryBuilderTableFilters\AllowedNumberRangeFilter; use App\Models\User; use Spatie\QueryBuilder\QueryBuilder; $users = QueryBuilder::for(User::query()) ->allowedFilters([ 'name', AllowedDateFilter::make('created_at'), AllowedNumberFilter::make('score'), AllowedNumberRangeFilter::make('age'), ]) ->allowedSorts(['name', 'created_at']) ->paginate(request('perPage', 15));
Prefixed Multi-Table Parameters
For one endpoint serving several tables, temporarily apply Spatie parameter names:
use AdesinFr\LaravelQueryBuilderTableFilters\QueryBuilderTable; use Spatie\QueryBuilder\QueryBuilder; $users = QueryBuilderTable::for('users')->withParameterNames(function () { return QueryBuilder::for(User::query()) ->allowedFilters(['name']) ->allowedSorts(['name']) ->paginate(perPage: request('perPage', 15), pageName: 'usersPage') ->withQueryString(); });
This reads parameters like:
users_filter[name]=john&users_sort=name&usersPage=2
For the default table, standard Spatie names are used:
filter[name]=john&sort=name&page=2
Scope
This package only provides backend query helpers. It intentionally does not include:
- Inertia macros.
- Table UI configuration builders.
- CSV export.
- Pagination or resource wrappers.