![]()
WARNING You're browsing the documentation for an old version of LARAVEL-DATATABLES. Consider upgrading your project to laravel-datatables 12.0.
Upgrade Guide
Upgrading from v7.x to v8.x
To upgrade Laravel DataTables from version 7.x to version 8.x:
composer require yajra/laravel-datatables-oracle:8.*php artisan vendor:publish --tag=datatables --force
If you are using service approach / buttons plugin:
composer require yajra/laravel-datatables-buttons:3.*php artisan vendor:publish --tag=datatables-buttons --force
If you are using html plugin:
composer require yajra/laravel-datatables-html:3.*php artisan vendor:publish --tag=datatables-html --force
If you are using fractal:
composer require yajra/laravel-datatables-fractal:1.*php artisan vendor:publish --tag=datatables-fractal --force
[v8] Namespace
The package namespace was updated from Yajra\Datatables to Yajra\DataTables.
Use sublime's find and replace all feature to update all affected files.
[v8] Facade
DataTables Facade was renamed to Yajra\DataTables\Facades\DataTables. If you want to continue using your old facade, just register the alias on your config/app.php file.
'Datatables' => Yajra\DataTables\Facades\DataTables::class
[v8] DataTables Factory class
DataTables factory class is now renamed to DataTables from Datatables. If you are injecting Yajra\Datatables\Datatables on your code, you must update it to Yajra\DataTables\DataTables.
DataTables::of() method is now an alias of new DataTables::make() method to match Laravel's factory api structure.
[v8] DataTables Buttons Changes
See https://github.com/yajra/laravel-datatables-buttons/blob/master/CHANGELOG.md for full changelog.
- The package namespace was updated from
Yajra\DatatablestoYajra\DataTables.
Use sublime's find and replace all feature to update all affected files.
-
Constructor dependencies were removed.
-
You need to instanstiate the DataTable class within the
dataTable()method: -
The
dataTable()method shouldpublicnow instead ofprotected./ FROMublic function dataTable() {return $this->datatables->eloquent($this->query());/ TOse Yajra\DataTables\EloquentDataTable;ublic function dataTable($query) {return new EloquentDataTable($query);Or inject the factory using method injection. Note that you need to inject your classes first before the query results.
se Yajra\DataTables\DataTables;ublic function dataTable(DataTables $dataTables, $query) {return $dataTables->eloquent($query); -
Query method results are automatically injected on
dataTable($query)api.se Yajra\DataTables\DataTables;ublic function dataTable($query, DataTables $dataTables) {return $dataTables->eloquent($query);ublic function query() {return Model::query(); -
The following methods now supports method injection:
Action Buttons:
csv(), pdf(), excel(), printPreview()Builder Methods:
ajax(), dataTable(), query() -
DataTableContractcontract removed. -
DataTableScopeContractcontract renamed toDataTableScope. -
DataTableButtonsContractcontract renamed toDataTableButtons.
[v8] DataTables Html Changes
The package namespace was updated from Yajra\Datatables to Yajra\DataTables.
Use sublime's find and replace all feature to update all affected files.
[v8] DataTables Trashed
DataTables now supports SoftDeletes hence, there is no need to use withTrashed and onlyTrashed.
[v8] Functionalities Removed
- Removed
filterColumnapi magic query method in favor of closure. - Removed support on older
snake_casemethods. - Removed silly implementation of proxying query builder calls via magic method.
- Removed unused methods.
- Removed
withTrashedandonlyTrashedapi.
Upgrading from v6.x to v7.x
To upgrade Laravel Datatables from version 6.x to version 7.x:
composer require yajra/laravel-datatables-oracle:^7.0php artisan vendor:publish --tag=datatables --force
Service Approach
Service class is now extracted to own plugin, Buttons Plugin. If you are using the service approach, you need to perform the following:
composer require yajra/laravel-datatables-buttons:^1.0
Register Yajra\Datatables\ButtonsServiceProvider::class on config/app.php and publish config.
php artisan vendor:publish --tag=datatables-buttons --force
Html Builder
HTML builder is now extracted to own plugin, If you are using Datatables html builder, you need to perform the following:
HTML Builder plugin is a prerequisite of Buttons plugin. You can optionally skip this part if already installed the Buttons plugin.
composer require yajra/laravel-datatables-html:^1.0php artisan vendor:publish --tag=datatables-html --force
XSS Protection
All columns are now escaped by default to protect us from XSS attack. To allow columns to have an html content, use rawColumns api.
Datatables::of(User::query()) ->addColumn('href', '<a href="#">Html Content</a>') ->rawColumns(['href']) ->toJson();
Upgrading from v5.x to v6.x
- Change all occurrences of
yajra\DatatablestoYajra\Datatables. (Use Sublime's find and replace all for faster update). - Remove
Datatablesfacade registration. - Temporarily comment out
Yajra\Datatables\DatatablesServiceProvider. - Update package version on your composer.json and use
yajra/laravel-datatables-oracle: ~6.0 - Uncomment the provider
Yajra\Datatables\DatatablesServiceProvider.