solivellaluisalberto / laravelmakefiltersandsorts
这是一个高效的 Laravel 包,用于基于 HTTP 请求参数对 Eloquent 查询应用高级过滤和动态排序。
v1.0.0
2024-09-13 08:07 UTC
Requires
- php: ^8.0
README
solivellaluisalberto/laravelmakefiltersandsorts 是一个 Laravel 包,旨在简化 Eloquent 查询中的过滤和排序应用,基于 HTTP 请求参数。
特性
- 动态过滤:支持操作符如
=
、!=
、>
、<
、>=
、<=
、like
、in
和between
。 - 使用
like
和|
分隔符进行多列搜索。 - 对简单列或 Eloquent 关系进行灵活排序。
安装
-
通过 Composer 安装:
要在 Laravel 项目中安装此包,只需执行以下命令:
composer require tu-usuario/mipaquete
-
发布服务提供者:
如果你使用 Laravel 5.5 或更高版本,服务提供者将自动通过 Composer 的自动加载注册。
否则,你需要在
config/app.php
文件中手动注册服务提供者。'providers' => [ // Otros providers... SolivellaLuisAlberto\LaravelMakeFiltersAndSorts\MakeFiltersAndSortsServiceProvider::class, ],
使用
应用过滤和排序
该包包括一个静态函数 sanitizeFiltersAndSorts
,它接受一个 Illuminate\Http\Request
实例和一个 Eloquent 查询,并根据请求中指定的 filters
和 sorts
参数应用过滤和排序。
控制器中的使用示例
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
:用于过滤的操作符(=
、!=
、>
、<
、>=
、<=
、like
、in
、between
)。value
:与指定列比较的值。
带有过滤器的请求示例
{ "filters": [ { "column": "name", "operator": "like", "value": "John" }, { "column": "age", "operator": ">=", "value": 30 } ] }
排序参数结构
sorts
参数应是一个具有以下结构的数组
-
column
:要排序的列。 -
order
:排序类型(asc
或desc
)。 -
relationship
(可选):如果你想通过关系排序,你可以包含此字段,其结构如下:table
:关系的表。column
:通过相关表中的列进行排序。
带有排序的请求示例
{ "sorts": [ { "column": "created_at", "order": "desc" }, { "relationship": { "table": "users", "column": "email" }, "order": "asc" } ] }
许可证
本软件包采用 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。