startupwrench / laratables
一个可以将你的Eloquent模型轻松转换为JSON的包,以便与Datatables 1.10+一起使用。
Requires
- php: >=5.4.0
- illuminate/support: ~5
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();
限制
这是一个相当简单的包,功能非常有限。它是为了个人使用而制作的,但我认为其他人可能也会用到它。在我看来,最重要的限制是不能对关系模型的列进行排序。如果有任何人有兴趣编写对此的支持,非常欢迎。