inprohub / laravel-datatables-mongodb
Laravel DataTables 插件,支持 Mongodb
v1.0.0
2023-10-25 15:47 UTC
Requires
Requires (Dev)
- orchestra/testbench: ^3.5
- squizlabs/php_codesniffer: ^3.1
This package is auto-updated.
Last update: 2024-09-25 18:01:23 UTC
README
此包是 Laravel DataTables 的插件,用于支持 Mongodb,通过 Laravel 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,
Inprohub\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' => Inprohub\DataTables\MongodbDataTable::class, 'mongodb-query' => Inprohub\DataTables\MongodbQueryDataTable::class, 'mongodb-hybrid' => Inprohub\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 Inprohub\DataTables\MongodbDataTable; return (new MongodbDataTable(App\User::where('id', '>', 1))->toJson()
通过特性使用。
- 将
MongodbDataTableTrait
特性添加到您的模型中。
use Jenssegers\Mongodb\Eloquent\Model; use Inprohub\DataTables\Traits\MongodbDataTableTrait; class User extends Model { use MongodbDataTableTrait; }
- 在您的模型上直接调用 dataTable()。
Route::get('users/data', function() { return User::dataTable()->toJson(); });
已知问题
orderColumn
和orderColumns
方法是空占位符,不执行任何操作- 目前不支持在模型之间的关系(非嵌入关系)上进行查看/搜索/排序(例如,通过
user.posts
列键)