dees040/pagination

为您的 Eloquent 模型提供动态分页。

dev-master 2018-03-20 14:08 UTC

This package is auto-updated.

Last update: 2024-08-25 21:33:45 UTC


README

Latest Stable Version Total Downloads Build status

为您的 Eloquent 模型提供动态分页。只需查询参数即可进行分页、排序和排序。

安装

使用 composer 安装此包。

composer require dees040/pagination

服务提供器将自动在 Laravel 5.5 或更高版本中注册。否则,请将以下提供器添加到您的 providers 数组中的 config/app.php

dees040\Pagination\ServiceProvider

此包附带一个小的配置文件。要发布配置文件,请运行以下命令

php artisan vendor:publish --provider="dees040\Pagination\ServiceProvider" --tag="config"

使用方法

当服务提供器注册时,此包将自动为 Eloquent 构建器添加宏(方法)。然后您可以使用 dynamicPagination() 方法。如果您愿意,可以在配置中更改方法名。

示例

<?php

namespace App\Http\Controllers;

use App\User;

class UserController extends Controller
{
    public function index()
    {
        $users = User::where('age', '>', 18)
            ->dynamicPagination();
        
        return response()->json($users);
    }
}

dynamicPagination() 方法与 Eloquent 构建器的 paginate() 方法具有相同的签名

dynamicPagination($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)`

所有这些参数都是可选的,如果某些参数未提供,则将尝试从查询(GET)参数中读取它们。

参数选项

page

页码参数是主要参数。如果查询(GET)参数中不存在 page 参数,则结果将不会分页。除非配置值 force_pagination 设置为 true。页码参数表示需要分页的页面。

per_page

每页参数表示每页需要分页的项目数量。因此,如果值为 15,则分页器将返回 15 个结果。如果未找到该参数,则分页器将使用在模型中设置的默认值,该默认值可以在模型中覆盖。

order_by

如果您想在进行分页之前执行 order by,则可以使用此参数。这对于使用 API 并在您的前端应用程序中的表中排序结果非常有用。分页器检查您是否可以使用给定的键进行排序。它会检查模型中是否存在 getOrderableKeys() 方法。此方法应返回一个可以排序的字段(字符串)数组。如果 getOrderableKeys() 不存在,它将使用 $fillable 项。始终添加 id 键。

sort_by

您希望以何种方式对结果进行排序?ascdesc?使用此参数选项指定。这只能与 order_by 参数一起使用。

示例路由

如果使用所有参数的示例

https://example.com/posts?page=3&per_page=30&order_by=updated_at&sort_by=desc

这里您将获得第 3 页开始的 30 篇帖子。结果按 updated_at 字段降序排序。

待办事项

  • 按关系排序
  • 添加搜索选项
    • 使用 scout
  • 添加宏支持
    • 对集合进行
    • 对查询构建器进行
  • 按多个字段排序