el-mag / request-query
此包的最新版本(dev-master)没有可用的许可信息。
dev-master
2019-07-22 15:28 UTC
Requires
- php: >=5.4.0
- laravel/framework: >=5.4
This package is auto-updated.
Last update: 2024-09-14 03:18:31 UTC
README
查询格式
排序
{
sort: FIELD,
order: ASC|DESC
}
或
{
sort: {
FIELD1: ASC|DESC,
FIELD2: ASC|DESC,
...
}
}
过滤
{
filter: {
FIELD1: VALUE1,
FIELD2: VALUE2,
FIELD3: {
operator: '>',
value: VALUE3
}
}
}
分页
{
limit: NUMBER,
page: NUMBER,
}
limit
默认为 10page
默认为 1
分组
{
group_by: FIELD,
group_map: {
1: "enabled",
0: "disabled"
}
}
group_map
是可选的,但如果提供,则结果中只显示映射的值。
用法
1. 使用 RequestQuery
类
<?php use ElMag\RQ\RequestQuery; class SomeController { public function index(Request $request) { $query = (new SomeModel)->newQuery(); $rq = new RequestQuery($request, $query); $rq->setSortFields('*'); // This is the default // OR: ['*'] // OR: ['age', 'salary', ...] $rq->setFilterFields(/* Same as `setSortFields` */); $rq->handleSort() // If needed ->handleFilter() // If needed ->handlePagination(); // If needed $results = $query->get(); $rq->handleGroupBy($results); // If Needed } ...
2. 使用预先准备好的 FormRequestWithQuery
表单请求
<?php use ElMag\RQ\FormRequestWithQuery; class SomeController { public function index(FormRequestWithQuery $request) { $query = (new SomeModel)->newQuery(); $request->setSortFields('*'); // This is the default // OR: ['*'] // OR: ['age', 'salary', ...] $request->setFilterFields(/* Same as `setSortFields` */); $request->setQuery($query) ->handleSort() // If needed ->handleFilter() // If needed ->handlePagination(); // If needed $results = $query->get(); $request->handleGroupBy($results); // If Needed } ...
3. 在自定义表单请求中使用 FormRequestQuery
特性
<?php class SomeController { public function index(CustomFormRequest $request) { $query = (new SomeModel)->newQuery(); $request->setQuery($query) ->handleSort() // If needed ->handleFilter() // If needed ->handlePagination(); // If needed $results = $query->get(); $request->handleGroupBy($results); // If Needed } ...
<?php use ElMag\RQ\FormRequestQuery; class CustomFormRequest extends FormRequest { use FormRequestQuery; protected $sortFields = '*'; // OR: ['*'] // OR: ['age', 'salary', ...] protected $filterFields = [/* Same as `sortFields` */]; }