ryanwinchester / laravel-paginates
Laravel 控制器特性,用于分页模型
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: 2024-08-28 22:17:42 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 认为这是一个好主意,那么您还需要什么理由呢?