![]()
WARNING You're browsing the documentation for an upcoming version of Laravel DataTables. The documentation and features of this release are subject to change.
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.