inprohub/laravel-datatables-mongodb

Laravel DataTables 插件,支持 Mongodb

v1.0.0 2023-10-25 15:47 UTC

This package is auto-updated.

Last update: 2024-09-25 18:01:23 UTC


README

Latest Stable Version Total Downloads License

此包是 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 配置中的 enginesbuilders 添加类定义,如上所述。

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();
});

已知问题

  • orderColumnorderColumns 方法是空占位符,不执行任何操作
  • 目前不支持在模型之间的关系(非嵌入关系)上进行查看/搜索/排序(例如,通过 user.posts 列键)