Skip to content

Laravel DataTables plugin to support Laravel Mongodb

License

Notifications You must be signed in to change notification settings

pimlie/laravel-datatables-mongodb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel DataTables Mongodb Plugin

Latest Stable Version Total Downloads License

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 and orderColumns 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)

About

Laravel DataTables plugin to support Laravel Mongodb

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages