Skip to content
Icon

WARNING You're browsing the documentation for an upcoming version of Laravel DataTables. The documentation and features of this release are subject to change.

Has Filter Column

The hasFilterColumn() API checks if a custom filter has been defined for a specific column using filterColumn().


Basic Usage

use Yajra\DataTables\Facades\DataTables;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder;
 
Route::get('user-data', function() {
$dataTable = DataTables::eloquent(User::query())
->filterColumn('name', fn(Builder $query, $keyword) =>
$query->whereRaw(
"CONCAT(first_name, ' ', last_name) LIKE ?",
["%{$keyword}%"]
)
);
 
// Check if 'name' has a custom filter
if ($dataTable->hasFilterColumn('name')) {
// Custom filter is defined
}
 
return $dataTable->toJson();
});

Use Case: Conditional Logic

This is useful when building conditional logic based on whether custom filters exist:

use Yajra\DataTables\Facades\DataTables;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder;
 
Route::get('user-data', function() {
$dataTable = DataTables::eloquent(User::query());
 
// Define custom filter only if not already defined
if (!$dataTable->hasFilterColumn('status')) {
$dataTable->filterColumn('status', function(Builder $query, $keyword) {
$query->where('status', $keyword);
});
}
 
return $dataTable->toJson();
});

Checking Multiple Columns

use Yajra\DataTables\Facades\DataTables;
use App\Models\User;
 
Route::get('user-data', function() {
$columns = ['name', 'email', 'status'];
$dataTable = DataTables::eloquent(User::query());
 
foreach ($columns as $column) {
if ($dataTable->hasFilterColumn($column)) {
// Log which columns have custom filters
logger()->info("Custom filter defined for: {$column}");
}
}
 
return $dataTable->toJson();
});

See Also