![]()
WARNING You're browsing the documentation for an upcoming version of Laravel DataTables. The documentation and features of this release are subject to change.
Order Column
In some cases, you may want to use a custom order SQL for a specific column. To achieve this, use the orderColumn API.
[!TIP] Order column has a special variable
$1which is being replaced as the order direction value of the request.
Basic Usage
In this example, we will order the column name with nulls as last result:
use Yajra\DataTables\Facades\DataTables;use App\Models\User; Route::get('user-data', function() { $model = User::query(); return DataTables::eloquent($model) ->orderColumn('name', '-name $1') ->toJson();});
Using Closure
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) ->orderColumn('name', function (Builder $query, $order) { $query->orderBy('status', $order); }) ->toJson();});
Disable Ordering
use Yajra\DataTables\Facades\DataTables;use App\Models\User; Route::get('user-data', function() { $model = User::query(); return DataTables::eloquent($model) ->orderColumn('name', false) ->toJson();});
Common Patterns
Nulls Last
return DataTables::eloquent($model) ->orderColumn('name', 'name $1 NULLS LAST') ->toJson();
Custom Direction Mapping
use Illuminate\Database\Eloquent\Builder; return DataTables::eloquent($model) ->orderColumn('status', function (Builder $query, $order) { // Map ascending/descending to custom status order $direction = $order === 'asc' ? 'desc' : 'asc'; $query->orderBy('priority', $direction); }) ->toJson();
See Also
- Order Columns - Configure multiple column ordering
- Order By Nulls Last - Null values ordering