logikinc / laravel-datatables-mongodb
Laravel DataTables 插件,支持 Mongodb
1.1.4
2019-04-06 07:18 UTC
Requires
Requires (Dev)
- orchestra/testbench: ^3.5
- squizlabs/php_codesniffer: ^3.1
This package is auto-updated.
Last update: 2024-09-06 20:39:55 UTC
README
本包是 Laravel DataTables 的插件,通过 Laravel Mongodb 支持使用 Mongodb
要求
文档
本插件提供了 Laravel DataTables 文档中描述的大部分功能。请参阅下方的 已知问题
安装
composer require pimlie/laravel-datatables-mongodb:^1.1
配置
查看 Laravel DataTables 配置了解如何配置和使用它。
如果您希望 datables()
和/或 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()
方法
要使此方法生效,您需要在 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
列键)