Displaying Columns - Datatables for Laravel                  [               Datatables for Laravel  ](/) 

  Toggle main menu         [Docs](https://laravel-datatables.com/docs) [Demos](/demos) [Blog](https://laravel-datatables.com/blog) [Pricing](/pricing)        Search  ⌘ K   [ Log in ](/login) 

  [Docs](https://laravel-datatables.com/docs) [Demos](/demos) [Blog](https://laravel-datatables.com/blog) [Pricing](/pricing) 

 Search docs and demos  

Type at least 2 characters to search.

    Documentation menu      ### Getting Started

- [ Installation ](https://laravel-datatables.com/docs)
- [ Dark Mode ](https://laravel-datatables.com/docs/dark-mode)

### Basics

- [ Creating a Table ](https://laravel-datatables.com/docs/creating-a-table)
- [ Displaying Columns ](https://laravel-datatables.com/docs/displaying-columns)
- [ Data Sources ](https://laravel-datatables.com/docs/data-sources)
- [ Internationalisation ](https://laravel-datatables.com/docs/internationalisation)
- [ Multi-Language ](https://laravel-datatables.com/docs/multi-language)
- [ Styling ](https://laravel-datatables.com/docs/styling)

### Customization

- [ Columns ](https://laravel-datatables.com/docs/customization-columns)
- [ Cell Renderer ](https://laravel-datatables.com/docs/customization-cell-renderer)
- [ Value Formatter ](https://laravel-datatables.com/docs/customization-value-formatter)
- [ Filters ](https://laravel-datatables.com/docs/customization-filters)
- [ Pagination ](https://laravel-datatables.com/docs/customization-pagination)
- [ Sorting Icons ](https://laravel-datatables.com/docs/customization-sorting-icons)
- [ Row Actions ](https://laravel-datatables.com/docs/customization-row-actions)
- [ Multi Row Actions ](https://laravel-datatables.com/docs/customization-multi-row-actions)
- [ Loading Indicator ](https://laravel-datatables.com/docs/customization-loading-indicator)
- [ Exporting ](https://laravel-datatables.com/docs/customization-exporting)
- [ Components ](https://laravel-datatables.com/docs/customization-components)
- [ Data Sources ](https://laravel-datatables.com/docs/customization-data-sources)
- [ State Persistence ](https://laravel-datatables.com/docs/customization-state-persistence)

### Features

- [ Accessibility ](https://laravel-datatables.com/docs/feature-accessibility)
- [ Actions and Forms ](https://laravel-datatables.com/docs/actions-and-forms)
- [ Aggregate Columns ](https://laravel-datatables.com/docs/feature-aggregate-columns)
- [ Column Reordering ](https://laravel-datatables.com/docs/feature-column-reordering)
- [ Column Visibility ](https://laravel-datatables.com/docs/feature-column-visibility)
- [ Custom Filters ](https://laravel-datatables.com/docs/feature-custom-filters)
- [ Custom Controls ](https://laravel-datatables.com/docs/feature-custom-controls)
- [ Exporting ](https://laravel-datatables.com/docs/feature-exporting)
- [ Freeze Columns and Headers ](https://laravel-datatables.com/docs/feature-freeze-columns-and-headers)
- [ Pagination ](https://laravel-datatables.com/docs/feature-pagination)
- [ Responsive Mobile ](https://laravel-datatables.com/docs/feature-responsive-mobile)
- [ Row Grouping ](https://laravel-datatables.com/docs/feature-row-grouping)
- [ Row Selection ](https://laravel-datatables.com/docs/feature-row-selection)
- [ Sorting and Searching ](https://laravel-datatables.com/docs/sorting-and-searching)
- [ State Persistence ](https://laravel-datatables.com/docs/feature-state-persistence)
- [ Value Preparation ](https://laravel-datatables.com/docs/feature-value-preparation)

### Cell Renderer

- [ Action Buttons ](https://laravel-datatables.com/docs/renderer-action-buttons)
- [ Avatar ](https://laravel-datatables.com/docs/renderer-avatar)
- [ Checkmark ](https://laravel-datatables.com/docs/renderer-checkmark)
- [ Color Sample ](https://laravel-datatables.com/docs/renderer-color-sample)
- [ Email Link ](https://laravel-datatables.com/docs/renderer-email-to-link)
- [ External Link ](https://laravel-datatables.com/docs/renderer-external-link)
- [ Friendly Timestamp ](https://laravel-datatables.com/docs/renderer-friendly-timestamp)
- [ Image ](https://laravel-datatables.com/docs/renderer-image)
- [ Long Text ](https://laravel-datatables.com/docs/renderer-long-text)
- [ Phone Link ](https://laravel-datatables.com/docs/renderer-phone-link)
- [ Progress Bar ](https://laravel-datatables.com/docs/renderer-progress-bar)
- [ Status Badge ](https://laravel-datatables.com/docs/renderer-status-badge)
- [ URL Link ](https://laravel-datatables.com/docs/renderer-url-link)
- [ Wire Link ](https://laravel-datatables.com/docs/renderer-wire-link)

### Value Formatter

- [ Compact Number ](https://laravel-datatables.com/docs/formatter-compact-number)
- [ Currency ](https://laravel-datatables.com/docs/formatter-currency)
- [ Duration ](https://laravel-datatables.com/docs/formatter-duration)
- [ Friendly Filesize ](https://laravel-datatables.com/docs/formatter-friendly-filesize)
- [ Friendly Timestamp ](https://laravel-datatables.com/docs/formatter-friendly-timestamp)
- [ Locale Timestamp ](https://laravel-datatables.com/docs/formatter-locale-timestamp)
- [ Number ](https://laravel-datatables.com/docs/formatter-number)
- [ Percent ](https://laravel-datatables.com/docs/formatter-percent)

  Displaying Columns
==================

The Column object is the schema unit for table output. Each Column instance defines key mapping, visibility, sort/search/filter behavior, and value pipeline stages.

1. Column Schema Basics
-----------------------

Create one Column per visible or functional field.

 columns() PHP     `use MorrowIt\LaravelDatatable\Config\Column;public function columns(): array{    return [        Column::make('id', 'ID')->sortable(),        Column::make('name', 'Name')->searchable()->sortable(),        Column::make('email', 'Email')->searchable(),        Column::make('created_at', 'Created At')->sortable(),    ];}` 

 ```
use MorrowIt\LaravelDatatable\Config\Column;

public function columns(): array
{
    return [
        Column::make('id', 'ID')->sortable(),
        Column::make('name', 'Name')->searchable()->sortable(),
        Column::make('email', 'Email')->searchable(),
        Column::make('created_at', 'Created At')->sortable(),
    ];
}
```

2. Behavior Flags
-----------------

Columns can be interactive, hidden, or functional-only depending on table requirements.

 Visibility and behavior PHP     `Column::make('id', 'ID')->toggleable(false);Column::make('internal_notes', 'Internal Notes')->visible(false);Column::make('status_code')->functional(); // participates in logic, not rendered` 

 ```
Column::make('id', 'ID')->toggleable(false);
Column::make('internal_notes', 'Internal Notes')->visible(false);
Column::make('status_code')->functional(); // participates in logic, not rendered
```

3. Filter Metadata
------------------

Filters are metadata-driven. Column definitions provide filter type and optional choices used by the advanced filters modal.

 Filterable columns PHP     `public function columns(): array{    return [        Column::make('name', 'Name')->filterable('text'),        Column::make('price', 'Price')->filterable('number'),        Column::make('created_at', 'Created At')->filterable('date'),        Column::make('status', 'Status')->filterable('select', options: [            'active' => 'Active',            'inactive' => 'Inactive',        ]),    ];}` 

 ```
public function columns(): array
{
    return [
        Column::make('name', 'Name')->filterable('text'),
        Column::make('price', 'Price')->filterable('number'),
        Column::make('created_at', 'Created At')->filterable('date'),
        Column::make('status', 'Status')->filterable('select', options: [
            'active' => 'Active',
            'inactive' => 'Inactive',
        ]),
    ];
}
```

4. Value Pipeline
-----------------

Each cell value flows through optional prepare callbacks, then optional formatter, then optional renderer.

 Pipeline example PHP     `Column::make('last_contact_at', 'Last Contact')    ->prepare(new \App\Support\Datatable\Formatters\PrepareTotalPrice())    ->format(new \MorrowIt\LaravelDatatable\Formatters\FriendlyTimestamp())    ->renderer(new \MorrowIt\LaravelDatatable\Renderers\FriendlyTimestamp());` 

 ```
Column::make('last_contact_at', 'Last Contact')
    ->prepare(new \App\Support\Datatable\Formatters\PrepareTotalPrice())
    ->format(new \MorrowIt\LaravelDatatable\Formatters\FriendlyTimestamp())
    ->renderer(new \MorrowIt\LaravelDatatable\Renderers\FriendlyTimestamp());
```

5. Semantic Class Metadata
--------------------------

Column header and cell classes are semantic metadata consumed by theme templates.

 Semantic classes PHP     `Column::make('price', 'Unit Price')    ->headerClasses('ldt-align-right')    ->cellClasses('ldt-align-right');` 

 ```
Column::make('price', 'Unit Price')
    ->headerClasses('ldt-align-right')
    ->cellClasses('ldt-align-right');
```

Column Method Reference
-----------------------

Core methods and their architectural purpose:

Prefer prepare() for normalization, format() for value representation, and renderer() for final HTML output. Keeping each concern separate makes table behavior easier to reason about and test.

    Method Role Input Type    `searchable()`Include column in global search.`bool` `sortable()`Allow sorting by this key.`bool` `filterable()`Define filter control metadata.`bool|string, string, array` `prepare()`Pre-format transformation stage.`FormatterInterface` `format()`Convert value semantics.`Closure|string|FormatterInterface` `renderer()`Produce final rendered output.`Closure|string|RendererInterface` `toggleable()`Allow visibility toggling in UI.`bool` `functional()`Logic-only column, not displayed.`bool` `headerClasses()`Attach semantic header classes.`array|string` `cellClasses()`Attach semantic cell classes.`array|string` `aggregate()`Include in aggregation pipeline.`bool`   

 Related documentation

 [Customization: Columns](https://laravel-datatables.com/docs/customization-columns) [Customization: Filters](https://laravel-datatables.com/docs/customization-filters) 

   © 2026 Copyright (C)  [ Morrow IT Consulting &amp; Services ](https://morrow-it.services)  

 [Terms of Service](https://laravel-datatables.com/legal/terms) [Privacy](https://laravel-datatables.com/legal/privacy) [Legal Disclosure](https://laravel-datatables.com/legal/disclosure)
