sevenshores / paginates
v1.1.0
2017-11-07 03:03 UTC
Requires
- php: >=7.0
Requires (Dev)
- laravel/framework: 5.*
This package is auto-updated.
Last update: 2022-02-01 13:01:55 UTC
README
此特质添加了一个超级好用的方法,它将为您提供类似于 league/fractal
提供的行为,而不需要所有设置和创建转换器。
通过此特质和Eloquent模型的$casts
和$hidden
属性,启动一个基本的API,将拥有与一些更重量级包相当的控制能力,将会非常快速。
安装
composer require ryanwinchester/laravel-paginates
用法
将其添加到您的控制器中(或基控制器,如下所示)
// ... use RyanWinchester\Paginates\PaginatesModels; class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests, PaginatesModels; }
然后在控制器方法中使用它,如下所示
class ProductsController extends Controller { public function index() { $products = $this->paginate(Product::class); return response()->json($products); } }
有时由于安全或隐私原因,您可能想要限制include
关系和/或columns
。如果是这种情况,请确保包含您想要的参数,同时排除任何用户提供的include参数。
$products = $this->paginate( Product::class, $request->except(['include', 'columns']) );
或者,假设您想自己定义一些包含关系
$products = $this->paginate( Product::with('variations'), $request->except(['include', 'columns']) );
或者,甚至限制到特定的列
$products = $this->paginate( Product::select(['id', 'price', 'in_stock']), $request->except('columns') );
您可以传递任何构建器实例或模型类名。
参数
- page :
page=3
页码 - perPage :
perPage=10
每页显示数量 - columns :
columns=title,body,author
限制到某些列 - include :
include=categories,tags
加载关系 - orderBy :
orderBy=published|desc
根据列和方向排序项目
实际操作
请尝试使用它并提供反馈。
Taylor认为这是一个好主意,所以我还需要什么理由呢?