LaravelPackages.net
Acme Inc.
Toggle sidebar
pimlie/laravel-datatables-mongodb

Laravel DataTables plugin to support Mongodb

46.568
12
1.1.5
About pimlie/laravel-datatables-mongodb

pimlie/laravel-datatables-mongodb is a Laravel package for laravel datatables plugin to support mongodb. It currently has 12 GitHub stars and 46.568 downloads on Packagist (latest version 1.1.5). Install it with composer require pimlie/laravel-datatables-mongodb. Discover more Laravel packages by pimlie or browse all Laravel packages to compare alternatives.

Last updated

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)

Star History Chart