Skip to content

Collection Data Source

Use Laravel's Collection as the data source for your DataTables. The Yajra\DataTables\CollectionDataTable class handles the conversion of your Collection into a DataTables-compatible response.

[!NOTE] Collections are best suited for smaller datasets. For large datasets, consider using Eloquent or Query Builder engines.


Quick Start

use Yajra\DataTables\Facades\DataTables;
 
Route::get('user-data', function() {
$collection = collect([
['id' => 1, 'name' => 'John'],
['id' => 2, 'name' => 'Jane'],
['id' => 3, 'name' => 'James'],
]);
 
return DataTables::collection($collection)->toJson();
});

With Model Collections

Load models and pass as collection:

use Yajra\DataTables\Facades\DataTables;
use App\Models\User;
 
Route::get('user-data', function() {
$collection = User::all();
 
return DataTables::collection($collection)->toJson();
});

[!NOTE] This approach loads all models into memory first. For large datasets, consider using the Eloquent Engine instead.


Adding Custom Columns

Add computed columns with closures:

use Yajra\DataTables\Facades\DataTables;
use App\Models\User;
 
Route::get('user-data', function() {
$collection = User::all();
 
return DataTables::collection($collection)
->addColumn('full_name', function (User $user) {
return $user->first_name . ' ' . $user->last_name;
})
->toJson();
});

Filtering

Apply collection methods before passing to DataTables:

use Yajra\DataTables\Facades\DataTables;
use App\Models\User;
 
Route::get('user-data', function() {
$collection = User::all()
->filter(function (User $user) {
return $user->is_active;
});
 
return DataTables::collection($collection)->toJson();
});

[!TIP] When using collection filtering with DataTables, the entire dataset is filtered in PHP memory. For large datasets, consider filtering at the database level using Eloquent or Query Builder engines.


When to Use Collections

Use Case Recommendation
Small datasets (< 1000 rows) ✅ Perfect for collections
Large datasets ❌ Use Eloquent or Query Builder
API data transformation ✅ Great with Fractal
Complex calculations ✅ Use Collection methods

See Also