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
- Filter Column - Define custom column filters
- Manual Search - Custom search logic