Skip to content

Musing Inertia TableServer-driven tables for Laravel and Inertia

Define query capabilities and workflows in PHP, then render a complete Vue data table with one component.

Product table with active filters, layout controls, actions, exports, and server-side summaries

One definition, two packages

The Laravel package owns normalized query state and server-side behavior. The Vue package renders the resource and sends every interaction back through Inertia. The browser never turns an undeclared column or filter into SQL.

php
use App\Models\Topic;
use Illuminate\Database\Eloquent\Builder;
use Musing\InertiaTable\Columns\DateTimeColumn;
use Musing\InertiaTable\Columns\TextColumn;
use Musing\InertiaTable\Table;

final class TopicsTable extends Table
{
    public function query(): Builder
    {
        return Topic::query();
    }

    public function columns(): array
    {
        return [
            TextColumn::make('name')->searchable()->sortable(),
            DateTimeColumn::make('created_at')->sortable(),
        ];
    }
}
vue
<DataTable :resource="topics" />

Build your first table

Install both packages and render a searchable, sortable resource in a few minutes.

Explore the playground

See filters, summaries, saved views, queued work, exports, and column layout together.

Start the guide or inspect the playground source.

Released under the MIT License.