Add Column
You can add a custom column to your response by using addColumn
on the DataTable
instance.
Add Column with Blade Syntax
use DataTables; Route::get('user-data', function() { $model = App\User::query(); return DataTables::eloquent($model) ->addColumn('intro', 'Hi {{ $name }}!') ->toJson();});
{tip} If you are building a DataTable for your
User
model which has the attributesfirst_name
andlast_name
, you can directly access these properties in the blade template with{{ $first_name }}
and{{ $last_name }}
. You can also use{{ $model->first_name }}
or{{ $model->last_name }}
respectively, which is helpful if you need to call a method on the model like{{ $model->getFullName() }}
.
Add Column with Closure
use DataTables; Route::get('user-data', function() { $model = App\User::query(); return DataTables::eloquent($model) ->addColumn('intro', function(User $user) { return 'Hi ' . $user->name . '!'; }) ->toJson();});
Add Column with View
You can also use a blade template to render a column by passing the view path as the second argument to addColumn
.
use DataTables; Route::get('user-data', function() { $model = App\User::query(); return DataTables::eloquent($model) ->addColumn('intro', 'users.datatables.intro') ->toJson();});
After creating the view in resources/views/users/datatables/intro.blade.php
, you can then access all the properties of the DataTable row directly in your view:
Hi {{ $name }}!
{tip} Similar to columns defined by an inline blade template, you can use
{{ $model->getFullName() }}
in views if you need access to the full model in order to call a method on it or similar.
Add Column with specific order
You can use a specific order for a column by passing the order as third argument to addColumn
:
use DataTables; Route::get('user-data', function() { $model = App\User::query(); return DataTables::eloquent($model) ->addColumn('intro', 'Hi {{$name}}!', 2) ->toJson();});