![]()
WARNING You're browsing the documentation for an upcoming version of Laravel DataTables. The documentation and features of this release are subject to change.
Query Builder Data Source
Use Laravel's Query Builder as the data source for your DataTables. The Yajra\DataTables\QueryDataTable class handles the conversion of your Query Builder into a DataTables-compatible response.
Quick Start
use Yajra\DataTables\Facades\DataTables;use Illuminate\Support\Facades\DB; Route::get('user-data', function() { $query = DB::table('users'); return DataTables::query($query)->toJson();});
Adding Custom Columns
Add computed columns with closures:
use Yajra\DataTables\Facades\DataTables;use Illuminate\Support\Facades\DB; Route::get('user-data', function() { $query = DB::table('users'); return DataTables::query($query) ->addColumn('full_name', function (object $row) { return $row->first_name . ' ' . $row->last_name; }) ->addColumn('action', function (object $row) { return '<button>Edit</button>'; }) ->toJson();});
[!NOTE] Added columns are computed and not part of the database, so search and sort are disabled by default. Use
editColumnif you need search/sort functionality.
Filtering
Filter results in your query before passing to DataTables:
use Yajra\DataTables\Facades\DataTables;use Illuminate\Support\Facades\DB; Route::get('user-data', function() { $query = DB::table('users') ->where('active', true) ->where('email_verified_at', '!=', null); return DataTables::query($query)->toJson();});
With Join Statements
Join related tables when building your query:
use Yajra\DataTables\Facades\DataTables;use Illuminate\Support\Facades\DB; Route::get('user-data', function() { $query = DB::table('users') ->join('posts', 'users.id', '=', 'posts.user_id') ->select('users.*', DB::raw('COUNT(posts.id) as post_count')) ->groupBy('users.id'); return DataTables::query($query)->toJson();});
When to Use Query Builder
| Use Case | Recommendation |
|---|---|
| Complex JOINs | ✅ Perfect for Query Builder |
| Raw SQL | ✅ Great for custom queries |
| Large datasets | ✅ Efficient server-side processing |
| Simple CRUD tables | Consider Eloquent |
See Also
- Eloquent Data Source - Use Eloquent models
- Collection Data Source - Use Collections
- Filter Column - Custom column filtering
- Manual Search - Custom search logic