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.

    Docs     ### Getting Started

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

### Basics

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

### Features

- [ Accessibility ](https://laravel-datatables.com/docs/feature-accessibility)
- [ Aggregate Columns ](https://laravel-datatables.com/docs/feature-aggregate-columns)
- [ Bulk Actions ](https://laravel-datatables.com/docs/feature-bulk-actions)
- [ Column Reordering ](https://laravel-datatables.com/docs/feature-column-reordering)
- [ Column Visibility ](https://laravel-datatables.com/docs/feature-column-visibility)
- [ Custom Controls ](https://laravel-datatables.com/docs/feature-custom-controls)
- [ Custom Filters ](https://laravel-datatables.com/docs/feature-custom-filters)
- [ Exporting ](https://laravel-datatables.com/docs/feature-exporting)
- [ Freeze Columns and Headers ](https://laravel-datatables.com/docs/feature-freeze-columns-and-headers)
- [ Inline Editing ](https://laravel-datatables.com/docs/feature-inline-editing)
- [ Pagination ](https://laravel-datatables.com/docs/feature-pagination)
- [ Responsive Mobile ](https://laravel-datatables.com/docs/feature-responsive-mobile)
- [ Row Actions ](https://laravel-datatables.com/docs/feature-row-actions)
- [ 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/feature-sorting-and-searching)
- [ State Persistence ](https://laravel-datatables.com/docs/feature-state-persistence)
- [ Value Preparation ](https://laravel-datatables.com/docs/feature-value-preparation)

### Customization

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

### 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.

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(),
    ];
}
```

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
```

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',
        ]),
    ];
}
```

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());
```

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
-----------------------

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. Core methods and their architectural purpose:

    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

 [Columns

Customization

Create your own column classes.](https://laravel-datatables.com/docs/customization-columns) [Aggregate Columns

Features

Display aggregate values for your columns.](https://laravel-datatables.com/docs/feature-aggregate-columns) [Column Reordering

Features

Enable drag &amp; drop column reordering.](https://laravel-datatables.com/docs/feature-column-reordering) [Column Visibility

Features

Configure column visibility and toggling.](https://laravel-datatables.com/docs/feature-column-visibility) 

   © 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)
