amitavroy/laravel-sort-and-filter

1.0.2 2024-01-01 17:10 UTC

This package is auto-updated.

Last update: 2024-08-30 18:36:40 UTC


README

Latest Version on Packagist Tests Total Downloads

此包允许您使用请求对象对Eloquent模型进行排序、过滤甚至搜索。

无需在控制器内编写条件代码来处理从前端(例如从JavaScript应用程序)通过URL传入的排序、过滤或搜索参数

只需传递请求对象,排序和过滤应该会自动工作。

安装

您可以通过composer安装此包

composer require amitavroy/laravel-sort-and-filter

您可以使用以下命令发布配置文件:

php artisan vendor:publish --provider="Amitav\SortAndFilter\SortAndFilterServiceProvider" --tag="config"

用法

此包提供了一个特质,您需要将其用于任何希望具有排序、过滤或搜索能力的模型。例如,在用户模型中,您需要添加

use SortAndFilter;

完成后,您可以在查询中将排序、过滤或搜索函数添加到模型中,并直接传递请求对象,如下所示。

添加特质后,您可以在任何模型上进行排序和/或过滤,如下所示

User::query()
    ->sort($request)
    ->filter($request)
    ->get();

有了这个,您可以通过URL传递参数,如下所示

https://:8000?sortBy=name&sortOrder=desc
https://:8000?filterBy=name&filterValue=Amitav

如果您想控制哪些字段可以进行过滤和排序,则可以在模型中创建一个名为 $sortable 的受保护字段来控制排序字段。同时,创建一个名为 $filterable 的受保护字段来控制哪些字段可以用于过滤。

您甚至可以像下面这样在任何模型上进行搜索

User::query()
    ->search($request)
    ->get();

注意:搜索将是一个数据库查询,并且包执行类似查询。因此,在发送请求对象进行搜索之前,请小心考虑允许在验证中使用的字符串数量。内部查询将类似于

SELECT * FROM user WHERE name LIKE "amit%";

测试

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全

如果您发现任何安全相关的问题,请通过电子邮件reachme@amitavroy.com联系,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。