![]()
WARNING You're browsing the documentation for an upcoming version of Laravel DataTables. The documentation and features of this release are subject to change.
Set Collection Offset
The setOffset() API defines the offset of the first item in the collection relative to the full dataset. This is useful when working with pre-sliced collections.
Basic Usage
use Yajra\DataTables\Facades\DataTables; Route::get('user-data', function() { $collection = collect([ ['id' => 11, 'name' => 'John'], ['id' => 12, 'name' => 'Jane'], ['id' => 13, 'name' => 'James'], ]); return DataTables::collection($collection) ->setOffset(10) // First item is at position 10 in the full dataset ->toJson();});
Use Case: Pre-Sliced Data
When you have a collection that's already been sliced from a larger dataset:
use Yajra\DataTables\Facades\DataTables; Route::get('page-data', function() { // Get page 2 of a pre-sliced collection (10 items per page) $page = request()->input('page', 1); $perPage = 10; // Get the full dataset and slice for current page $fullCollection = cache()->remember('all-users', 3600, function () { return User::all()->toArray(); }); $sliced = collect($fullCollection) ->slice(($page - 1) * $perPage, $perPage); return DataTables::collection($sliced) ->setOffset(($page - 1) * $perPage) ->toJson();});
With Index Column
The offset affects the row index when using addIndexColumn():
use Yajra\DataTables\Facades\DataTables; Route::get('user-data', function() { $collection = collect([ ['id' => 11, 'name' => 'John'], ['id' => 12, 'name' => 'Jane'], ]); return DataTables::collection($collection) ->setOffset(10) ->addIndexColumn() ->toJson();}); // Result: DT_RowIndex will be 11, 12 instead of 1, 2
See Also
- Collection Data Source - Using collections with DataTables
- Index Column - Adding row index