Skip to main content

Introduction

Filament’s Table Builder provides a complete solution for displaying, filtering, and managing data in your Laravel applications. Built on top of Eloquent, it offers a powerful PHP-based API with extensive customization options while maintaining simplicity. Tables are composed of several key components:
  • Columns - Display data in various formats
  • Filters - Allow users to scope and search data
  • Actions - Add interactive buttons and bulk operations
  • Pagination - Handle large datasets efficiently

Getting started

Define a table using the table() method, which returns a Table instance configured with columns, filters, and actions:

Defining columns

Columns determine what data appears in each row of your table. Filament includes many prebuilt column types:

Text Column

Display text content with formatting, badges, and icons

Icon Column

Show icons or boolean states with colors

Image Column

Display images with circular, square, or stacked layouts

Color Column

Preview color values as swatches

Column basics

Create columns using the static make() method with the attribute name:

Accessing relationships

Use dot notation to display data from Eloquent relationships:
Filament automatically eager-loads these relationships for optimal performance.

Making columns sortable

Enable sorting by clicking column headers:

Making columns searchable

Add a search field to filter by column content:
You can make multiple columns searchable - the search will match any of them.

Pagination

Tables are paginated by default with options for 5, 10, 25, and 50 records per page.

Customizing pagination options

Setting default page size

Using simple pagination

Using cursor pagination

Disabling pagination

Clickable rows

Make entire rows clickable using the recordUrl() method:
Open URLs in a new tab:

Reordering records

Allow drag-and-drop reordering with a sort column:
The sort column stores the order. Users can toggle reordering mode with a button.

Descending order

Styling table rows

Striped rows

Conditional row classes

Customizing the table header

Add a heading and description:

Polling content

Automatically refresh table data at intervals:

Deferred loading

Load table data asynchronously for better initial page performance:

Global settings

Configure default behavior for all tables in a service provider:

Next steps

Columns

Learn about all available column types and customization options

Filters

Add powerful filtering capabilities to your tables

Actions

Implement row actions, bulk actions, and header actions