solivellaluisalberto/laravelmakefiltersandsorts

这是一个高效的 Laravel 包,用于基于 HTTP 请求参数对 Eloquent 查询应用高级过滤和动态排序。

v1.0.0 2024-09-13 08:07 UTC

This package is auto-updated.

Last update: 2024-09-13 08:33:49 UTC


README

solivellaluisalberto/laravelmakefiltersandsorts 是一个 Laravel 包,旨在简化 Eloquent 查询中的过滤和排序应用,基于 HTTP 请求参数。

特性

  • 动态过滤:支持操作符如 =!=><>=<=likeinbetween
  • 使用 like| 分隔符进行多列搜索。
  • 对简单列或 Eloquent 关系进行灵活排序。

安装

  1. 通过 Composer 安装:

    要在 Laravel 项目中安装此包,只需执行以下命令:

    composer require tu-usuario/mipaquete
  2. 发布服务提供者:

    如果你使用 Laravel 5.5 或更高版本,服务提供者将自动通过 Composer 的自动加载注册。

    否则,你需要在 config/app.php 文件中手动注册服务提供者。

    'providers' => [
        // Otros providers...
        SolivellaLuisAlberto\LaravelMakeFiltersAndSorts\MakeFiltersAndSortsServiceProvider::class,
    ],

使用

应用过滤和排序

该包包括一个静态函数 sanitizeFiltersAndSorts,它接受一个 Illuminate\Http\Request 实例和一个 Eloquent 查询,并根据请求中指定的 filterssorts 参数应用过滤和排序。

控制器中的使用示例

use Illuminate\Http\Request;
use SolivellaLuisAlberto\LaravelMakeFiltersAndSorts\FilterService;

class ExampleController extends Controller
{
    public function index(Request $request)
    {
        $query = MyModel::query();

        // Aplicar filtros y ordenamientos usando la función del paquete
        $query = FilterService::sanitizeFiltersAndSorts($request, $query);

        return $query->get();
    }
}

过滤参数结构

过滤参数应以数组形式通过请求中的 filters 参数传递。每个过滤器应包含以下字段:

  • column:要过滤的列。
  • operator:用于过滤的操作符(=!=><>=<=likeinbetween)。
  • value:与指定列比较的值。

带有过滤器的请求示例

{
    "filters": [
        { "column": "name", "operator": "like", "value": "John" },
        { "column": "age", "operator": ">=", "value": 30 }
    ]
}

排序参数结构

sorts 参数应是一个具有以下结构的数组

  • column:要排序的列。

  • order:排序类型(ascdesc)。

  • relationship(可选):如果你想通过关系排序,你可以包含此字段,其结构如下:

    • table:关系的表。
    • column:通过相关表中的列进行排序。

带有排序的请求示例

{
    "sorts": [
        { "column": "created_at", "order": "desc" },
        { "relationship": { "table": "users", "column": "email" }, "order": "asc" }
    ]
}

许可证

本软件包采用 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。