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\Datatables
toYajra\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 shouldpublic
now 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()
-
DataTableContract
contract removed. -
DataTableScopeContract
contract renamed toDataTableScope
. -
DataTableButtonsContract
contract 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
filterColumn
api magic query method in favor of closure. - Removed support on older
snake_case
methods. - Removed silly implementation of proxying query builder calls via magic method.
- Removed unused methods.
- Removed
withTrashed
andonlyTrashed
api.
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\Datatables
toYajra\Datatables
. (Use Sublime's find and replace all for faster update). - Remove
Datatables
facade 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
.