sevenshores/paginates

此包已被弃用,不再维护。作者建议使用ryanwinchester/laravel-paginates包。

Laravel控制器特质,用于模型分页

v1.1.0 2017-11-07 03:03 UTC

This package is auto-updated.

Last update: 2022-02-01 13:01:55 UTC


README

Packagist Packagist

此特质添加了一个超级好用的方法,它将为您提供类似于 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 根据列和方向排序项目

实际操作

然后您可以在路由中添加一些这些可选参数到页码和过滤: url

response

请尝试使用它并提供反馈。

Taylor认为这是一个好主意,所以我还需要什么理由呢?