djinorm / djin-filter-sort-paginate
Djin Filter-Sort-Paginate abstraction for passing to repository
1.1.2
2018-05-21 10:09 UTC
Requires
- php: >=7.1.0
- adbario/php-dot-notation: ^2.0
Requires (Dev)
- phpunit/phpunit: ^7.1
README
PHP
[ 'paginate' => { 'number' => 10, 'size' => 50, }, 'sort' => [ 'field_1' => Sort::SORT_DESC, 'field_2' => Sort::SORT_ASC, ], 'filters' => [ '$or' => [ '$or' => [ '$and' => [ 'field_1' => ['$between' => ['2018-01-01', '2018-12-31']], 'field_2' => ['$compare' => [CompareFilter::GREAT_THAN, 500]], 'field_3' => ['$empty' => true], 'field_4' => ['$empty' => false], 'field_5' => ['$equals' => 'value'], 'field_6' => ['$fulltextSearch' => 'hello world'], 'field_7' => ['$in' => [1, 2, 3, 4, 'five', 'six']], 'field_8' => ['$wildcard' => '*hello ?????!'], 'field_9' => ['$notBetween' => [100, 200]], 'field_10' => ['$notEquals' => 'not-value'], 'field_11' => ['$notIn' => [9, 8, 7]], 'field_12' => ['$notWildcard' => '*hello ?????!'], ], 'field_1' => [ '$empty' => false, '$compare' => [CompareFilter::LESS_THAN, 10000], ], ], 'datetime' => ['$between' => ['2018-01-01', '2018-12-31']], ], ], ]
JSON
{ "paginate": { "page": 10, "pageSize": 50 }, "sort": { "field_1": -1, "field_2": 1 }, "filters": { "$or": { "$or": { "$and": { "field_1": {"$between": ["2018-01-01", "2018-12-31"]}, "field_2": {"$compare": [">", 500]}, "field_3": {"$empty": true}, "field_4": {"$empty": false}, "field_5": {"$equals": "value"}, "field_6": {"$fulltextSearch": "hello world"}, "field_7": {"$in": [1, 2, 3, 4, "five", "six"]}, "field_8": {"$wildcard": "*hello ?????!"}, "field_9": {"$notBetween": [100, 200]}, "field_10": {"$notEquals": "not-value"}, "field_11": {"$notIn": [9, 8, 7]}, "field_12": {"$notWildcard": "*hello ?????!"} }, "field_1": { "$empty": false, "$compare": ["<", 10000] } }, "datetime": {"$between": ["2018-01-01", "2018-12-31"]} } } }