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 文件。