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.

Sending Parameter to DataTable Class

You can send a parameter from controller to DataTable class using the with API.


Basic Usage

<?php
// routes/web.php
 
use App\DataTables\UsersDataTable;
use Illuminate\Support\Facades\Route;
 
Route::get('datatable/{id}', function(UsersDataTable $dataTable, $id) {
return $dataTable->with('id', $id)
->with([
'key2' => 'value2',
'key3' => 'value3',
])
->render('path.to.view');
});

You can then access the variable as a class property:

<?php
// app/DataTables/UsersDataTable.php
 
namespace App\DataTables;
 
use App\Models\User;
use Yajra\DataTables\Services\DataTable;
 
class UsersDataTable extends DataTable
{
public function query()
{
return User::where('id', $this->id);
}
}

Common Use Cases

Filter by Category

Route::get('posts/{category}', function(PostsDataTable $dataTable, $category) {
return $dataTable->with('category', $category)
->render('posts.index');
});
public function query()
{
return Post::where('category', $this->category);
}

Filter by Status

Route::get('users/{status}', function(UsersDataTable $dataTable, $status) {
return $dataTable->with('status', $status)
->render('users.index');
});

See Also