Skip to content

Set Filtered Records

In some cases, we need to manually set the filtered records count of our DataTables and skip its internal counting functionality. To achieve this, use the setFilteredRecords($count) API.


Basic Usage

use Yajra\DataTables\Facades\DataTables;
use App\Models\User;
 
Route::get('user-data', function() {
$model = User::query();
 
return DataTables::eloquent($model)
->setFilteredRecords(100)
->toJson();
});

Common Use Cases

Combined with Set Total Records

use Yajra\DataTables\Facades\DataTables;
use App\Models\User;
 
Route::get('user-data', function() {
$model = User::query();
$totalCount = User::count();
$filteredCount = User::where('status', 'active')->count();
 
return DataTables::eloquent($model)
->setTotalRecords($totalCount)
->setFilteredRecords($filteredCount)
->toJson();
});

Performance Optimization

use Yajra\DataTables\Facades\DataTables;
use App\Models\User;
use Illuminate\Support\Facades\Cache;
 
Route::get('user-data', function() {
$model = User::query();
$filteredCount = Cache::remember('active_users_count', 60, fn () => User::where('status', 'active')->count());
 
return DataTables::eloquent($model)
->setFilteredRecords($filteredCount)
->toJson();
});

See Also