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
The package namespace was updated from Yajra\Datatables
to Yajra\DataTables
.
Use sublime's find and replace all feature to update all affected files.
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
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.
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
.// FROM public function dataTable() { return $this->datatables->eloquent($this->query()); }
// TO use Yajra\DataTables\EloquentDataTable; public 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.
use Yajra\DataTables\DataTables; public function dataTable(DataTables $dataTables, $query) { return $dataTables->eloquent($query); }
-
Query method results are automatically injected on
dataTable($query)
api.use Yajra\DataTables\DataTables; public function dataTable($query, DataTables $dataTables) { return $dataTables->eloquent($query); } public 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
.
The package namespace was updated from Yajra\Datatables
to Yajra\DataTables
.
Use sublime's find and replace all feature to update all affected files.
DataTables now supports SoftDeletes
hence, there is no need to use withTrashed
and onlyTrashed
.
- 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.
To upgrade Laravel Datatables from version 6.x to version 7.x:
composer require yajra/laravel-datatables-oracle:^7.0
php artisan vendor:publish --tag=datatables --force
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 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.0
php artisan vendor:publish --tag=datatables-html --force
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();
- 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
.