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.

Manual Order

You may optionally disable the default ordering function of DataTables and write your own using the order API.


Basic Usage

use Yajra\DataTables\Facades\DataTables;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder;
 
Route::get('user-data', function() {
$model = User::query();
 
return DataTables::eloquent($model)
->order(function (Builder $query) {
if (request()->has('name')) {
$query->orderBy('name', 'asc');
}
 
if (request()->has('email')) {
$query->orderBy('email', 'desc');
}
})
->toJson();
});

Advanced Ordering

Multiple Column Ordering

return DataTables::eloquent(User::query())
->order(function (Builder $query) {
// Primary sort
$query->orderBy('status', 'asc');
// Secondary sort
$query->orderBy('name', 'asc');
})
->toJson();

Conditional Ordering

return DataTables::eloquent(User::query())
->order(function (Builder $query) {
$sortColumn = request('sort', 'created_at');
$sortDirection = request('direction', 'desc');
 
// Only order by allowed columns
$allowedColumns = ['name', 'email', 'created_at'];
if (in_array($sortColumn, $allowedColumns)) {
$query->orderBy($sortColumn, $sortDirection);
}
})
->toJson();

See Also