startupwrench/laratables

一个可以将你的Eloquent模型轻松转换为JSON的包,以便与Datatables 1.10+一起使用。

dev-master 2017-01-05 19:03 UTC

This package is auto-updated.

Last update: 2024-09-16 11:39:53 UTC


README

这是一个将Eloquent查询转换为JSON输出的Laravel包,以便与Datatables一起使用。这是对: https://github.com/yuri-moens/laratables 的分支,用于修复一些问题以及生产应用中的错误,欢迎使用,但无任何明示或暗示的保证。

安装

将以下内容添加到你的 composer.json 文件中。

require {
	"startupwrench/laratables": "dev-master"
}

运行 composer install

打开 app/config/app.php 并添加

Startupwrench\Laratables\LaratablesServiceProvider::class,

同时添加别名

'Laratables' => Startupwrench\Laratables\LaratablesFacade::class,

并且通过命令行发布配置

php artisan vendor:publish

用法

使用模型函数设置主要的Eloquent模型。

$dt = Laratables::model('NewsItem');

设置任何你想要使用的可选关系。

$dt->with('user', 'category');

设置你想要检索的列。关系模型的列以 . 编写。

$dt->columns([ 'id', 'title', 'user.first_name', 'newsCategory.name', 'created_at', 'updated_at' ]);

围绕列包裹一些可选的HTML。参数可以通过将它们包裹在花括号中传递。

$dt->wrapHtml('title', '<a href="news/{id}/edit">', '</a>');
$dt->wrapHtml('user.first_name', '<a href="users/{user->id}/edit">', '</a>');

也可以手动添加额外的列。

$dt->addColumn('delete','<a class="btn btn-danger" href="news/{id}" data-method="delete">Delete</a>');

获取JSON输出。

$response = $dt->make();

链式调用

属性设置器都返回L4EloquentDatatables对象,因此你可以轻松链式调用命令。上述示例可以重写为以下内容。

Laratables::model('NewsItem') 
	->with('user', 'newsCategory')
	->columns([ 'id', 'title', 'user.first_name', 'newsCategory.name', 'created_at', 'updated_at' ])
	->wrapHtml('title', '<a href="news/{id}/edit">', '</a>')
	->wrapHtml('user.first_name', '<a href="users/{user->id}/edit">', '</a>')
	->addRawColumn('delete','<a class="btn btn-danger" href="news/{id}" data-method="delete">Delete</a>')
	->make();

限制

这是一个相当简单的包,功能非常有限。它是为了个人使用而制作的,但我认为其他人可能也会用到它。在我看来,最重要的限制是不能对关系模型的列进行排序。如果有任何人有兴趣编写对此的支持,非常欢迎。