Remove Column
You can remove columns from your DataTables response using the removeColumn API. This is useful for excluding sensitive or unnecessary data from the response.
Basic Usage
Remove a single column:
use Yajra\DataTables\Facades\DataTables;use App\Models\User; Route::get('user-data', function() { $model = User::query(); return DataTables::eloquent($model) ->removeColumn('password') ->toJson();});
Remove Multiple Columns
Chain multiple removes or pass an array:
return DataTables::eloquent($model) ->removeColumn('password') ->removeColumn('remember_token') ->toJson();
Or use multiple arguments:
return DataTables::eloquent($model) ->removeColumn('password', 'remember_token', 'api_token') ->toJson();
Common Use Cases
Remove Sensitive Data
return DataTables::eloquent($model) ->removeColumn('password') ->removeColumn('api_token') ->removeColumn('secret_question') ->removeColumn('secret_answer') ->toJson();
Remove Internal Fields
return DataTables::eloquent($model) ->removeColumn('deleted_at') ->removeColumn('created_by') ->removeColumn('updated_by') ->toJson();
Combine with AddColumn
return DataTables::eloquent($model) ->removeColumn('first_name') ->removeColumn('last_name') ->addColumn('full_name', function (User $user) { return $user->first_name . ' ' . $user->last_name; }) ->toJson();
Alternative: Make Hidden
You can also use Laravel's makeHidden method on Eloquent models:
return DataTables::eloquent($model) ->makeHidden(['password', 'remember_token']) ->toJson();
💡 Tip:
makeHiddenis more performant as it happens at the model level before array conversion.
Column Visibility Comparison
| Method | When Data is Removed | Use Case |
|---|---|---|
removeColumn |
During DataTables processing | Exclude from response only |
makeHidden |
During model serialization | Always exclude from JSON |
$hidden property |
On model serialization | Persistent model hiding |
See Also
- Make Hidden - Hide Eloquent attributes
- Add Column - Add computed columns
- Raw Columns - Allow HTML rendering