ryanwinchester/laravel-paginates

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

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

This package is auto-updated.

Last update: 2024-08-28 22:17:42 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 认为这是一个好主意,那么您还需要什么理由呢?