el-mag / request-query
There is no license information available for the latest version (dev-master) of this package.
dev-master
2019-07-22 15:28 UTC
Requires
- php: >=5.4.0
- laravel/framework: >=5.4
This package is auto-updated.
Last update: 2025-03-14 04:31:45 UTC
README
Query Format
Sorting
{
sort: FIELD,
order: ASC|DESC
}
OR
{
sort: {
FIELD1: ASC|DESC,
FIELD2: ASC|DESC,
...
}
}
Filtration
{
filter: {
FIELD1: VALUE1,
FIELD2: VALUE2,
FIELD3: {
operator: '>',
value: VALUE3
}
}
}
Pagination
{
limit: NUMBER,
page: NUMBER,
}
limit
default to 10page
default to 1
Grouping
{
group_by: FIELD,
group_map: {
1: "enabled",
0: "disabled"
}
}
group_map
is optional, but if provided, only mapped values will appear in the result.
Usage
1. Using RequestQuery
class
<?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. Using FormRequestWithQuery
pre-prepared form request
<?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. Using FormRequestQuery
trait in custom form request
<?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` */]; }