logikinc / laravel-datatables-mongodb
Laravel DataTables plugin to support Mongodb
Requires
Requires (Dev)
- orchestra/testbench: ^3.5
- squizlabs/php_codesniffer: ^3.1
This package is auto-updated.
Last update: 2024-11-06 20:55:43 UTC
README
This package is a plugin for Laravel DataTables to support Mongodb using Laravel Mongodb
Requirements
Documentation
This plugin provides most functionalities described in the Laravel Datatables documentation. See Known issues
below
Installation
composer require pimlie/laravel-datatables-mongodb:^1.1
Configure
Check the Laravel DataTables configuration for how to configure and use it.
If you want the datables()
and/or of
methods to automatically use the correct datatables engine,
Unfortunately we cant use auto-discovery yet, this package will be discoverd before laravel-datatables is and that will overwrite the engines config at the moment
> Although this package has a dependency on laravel-datatables, you need to explictly require the package as auto-discovery works based on the packages listed in the dependencies section of your composer.json.
composer require yajra/laravel-datatables-oracle:"~8.0"
composer require pimlie/laravel-datatables-mongodb:^1.1
so you either you have to add the service provide:
'providers' => [
...,
Yajra\DataTables\DataTablesServiceProvider::class,
Pimlie\DataTables\MongodbDataTablesServiceProvider::class, // add _after_ Yajra's ServiceProvider
]
or open the config/datatables.php
file and add the engines manually to the config:
/** * Datatables list of available engines. * This is where you can register your custom datatables engine. */ 'engines' => [ // The Jenssegers\Mongodb classes extend the default Query/Eloquent classes // thus the engines need to be listed above the default engines // to make sure they are tried first 'moloquent' => Pimlie\DataTables\MongodbDataTable::class, 'mongodb-query' => Pimlie\DataTables\MongodbQueryDataTable::class, 'mongodb-hybrid' => Pimlie\DataTables\HybridMongodbQueryDataTable::class, 'eloquent' => Yajra\DataTables\EloquentDataTable::class, 'query-builder' => Yajra\DataTables\QueryDataTable::class, 'collection' => Yajra\DataTables\CollectionDataTable::class, ], /** * Datatables accepted builder to engine mapping. * This is where you can override which engine a builder should use * Note, only change this if you know what you are doing! */ 'builders' => [ //Jenssegers\Mongodb\Eloquent\Builder::class => 'moloquent', //Jenssegers\Mongodb\Query\Builder::class => 'mongodb-query', //Jenssegers\Mongodb\Helpers\EloquentBuilder::class => 'eloquent', //Illuminate\Database\Eloquent\Relations\Relation::class => 'eloquent', //Illuminate\Database\Eloquent\Builder::class => 'eloquent', //Illuminate\Database\Query\Builder::class => 'query', //Illuminate\Support\Collection::class => 'collection', ],
Usage
Use the datatables()
method
For this to work you need to have the class definitions added to the engines
and builders
datatables configuration, see above.
use \App\MyMongodbModel; $datatables = datatables(MyMongodbModel::all());
Use the dataTable class directly.
use Pimlie\DataTables\MongodbDataTable; return (new MongodbDataTable(App\User::where('id', '>', 1))->toJson()
Use via trait.
- Add the
MongodbDataTableTrait
trait to your model.
use Jenssegers\Mongodb\Eloquent\Model; use Pimlie\DataTables\Traits\MongodbDataTableTrait; class User extends Model { use MongodbDataTableTrait; }
- Call dataTable() directly on your model.
Route::get('users/data', function() { return User::dataTable()->toJson(); });
Known issues
- the
orderColumn
andorderColumns
methods are empty placeholders and do nothing - there is currently no support for viewing/searching/ordering on (non-embedded) relationships between Models (eg through a
user.posts
column key)