ymo/laratables

一个将您的 Eloquent 模型轻松转换为 JSON 以供 Datatables 1.10+ 使用的包。

dev-master 2015-04-13 11:57 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:05:52 UTC


README

Laravel 包,用于将 Eloquent 查询转换为 JSON 输出,以便与 Datatables 一起使用。

安装

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

require {
	"ymo/laratables": "~2"
}

运行 composer install

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

'Ymo\Laratables\LaratablesServiceProvider',

同时添加别名

'Laratables' => 'Ymo\Laratables\Facades\LaratablesFacade',

并从命令行发布配置

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

限制

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