amitavroy / laravel-sort-and-filter
1.0.2
2024-01-01 17:10 UTC
Requires
- php: ^7.2 || ^8.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- orchestra/testbench: ^5.0
- phpunit/phpunit: 9.3
- psalm/plugin-laravel: ^1.2
- vimeo/psalm: ^3.11
This package is auto-updated.
Last update: 2024-08-30 18:36:40 UTC
README
此包允许您使用请求对象对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)。请参阅许可证文件以获取更多信息。