In some cases, you may want to use a custom order sql for a specific column. To achieve this, you can use orderColumn
api.
{tip} Order column has a special variable
$1
which is being replace as the order direction value of the request.
In this example, we will order the column name with nulls as last result.
use DataTables;
Route::get('user-data', function() {
$model = App\User::query();
return DataTables::eloquent($model)
->orderColumn('name', '-name $1')
->toJson();
});
Here is another example of orderColumn using closure.
use DataTables;
Route::get('user-data', function () {
$model = App\User::query();
return DataTables::eloquent($model)
->orderColumn('name', function ($query, $order) {
$query->orderBy('status', $order);
});
});
Disable ordering via orderColumn.
use DataTables;
Route::get('user-data', function () {
$model = App\User::query();
return DataTables::eloquent($model)
->orderColumn('name', false);
});