Looking to hire Laravel developers? Try LaraJobs

laravel-query-builder-table-filters maintained by adesin-fr

Description
Advanced Spatie Laravel Query Builder filters for Vue query builder tables.
Author
Last update
2026/08/10 09:24 (2026.33.1)
License
Links
Downloads
1

Comments
comments powered by Disqus

Laravel Query Builder Table Filters

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.