pimlie/ laravel-datatables-mongodb
Laravel DataTables插件,支持Mongodb
1.1.5
2020-02-10 07:07 UTC
Requires
- jenssegers/mongodb: ^3.4
- yajra/laravel-datatables-oracle: ^8.9|^9.6
Requires (Dev)
- orchestra/testbench: ^3.5
- squizlabs/php_codesniffer: ^3.1
README
此包是Laravel DataTables的插件,用于支持使用Laravel Mongodb的Mongodb
要求
文档
此插件提供了Laravel DataTables文档中描述的大多数功能。请参阅下面的“已知问题”
安装
composer require pimlie/laravel-datatables-mongodb:^1.1
配置
有关如何配置和使用Laravel DataTables的详细信息,请参阅配置。
如果您希望datatables()
和/或of
方法自动使用正确的datatables引擎,
遗憾的是,我们目前还不能使用自动发现,此包将在laravel-datatables之前被发现,这将会覆盖当前的引擎配置
尽管此包依赖于laravel-datatables,但您需要明确要求该包,因为自动发现是基于您的composer.json中依赖部分列出的包来工作的。
composer require yajra/laravel-datatables-oracle:"~8.0"
composer require pimlie/laravel-datatables-mongodb:^1.1
因此,您必须:
'providers' => [
...,
Yajra\DataTables\DataTablesServiceProvider::class,
Pimlie\DataTables\MongodbDataTablesServiceProvider::class, // add _after_ Yajra's ServiceProvider
]
或者打开config/datatables.php
文件并手动将引擎添加到配置中
/** * 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', ],
使用
使用datatables()
方法
为此功能正常工作,您需要将类定义添加到datatables配置中的engines
和builders
,见上文。
use \App\MyMongodbModel; $datatables = datatables(MyMongodbModel::all());
直接使用dataTable类。
use Pimlie\DataTables\MongodbDataTable; return (new MongodbDataTable(App\User::where('id', '>', 1))->toJson()
通过特质使用。
- 将
MongodbDataTableTrait
特质添加到您的模型中。
use Jenssegers\Mongodb\Eloquent\Model; use Pimlie\DataTables\Traits\MongodbDataTableTrait; class User extends Model { use MongodbDataTableTrait; }
- 直接在您的模型上调用dataTable()。
Route::get('users/data', function() { return User::dataTable()->toJson(); });
已知问题
orderColumn
和orderColumns
方法是空的占位符,不起任何作用- 目前不支持在模型之间的(非嵌入式)关系上查看/搜索/排序(例如通过
user.posts
列键)