grixu/query-builder-filters

laravel-query-builder(由Spatie开发)的过滤器集合

1.2.2 2021-11-18 11:31 UTC

README

laravel-query-builder(由Spatie开发)的过滤器集合

安装

您可以通过composer安装此包

composer require grixu/query-builder-filters

用法

这是一个用于与Spatie制作的优秀包Spatie: laravel-query-builder一起使用的过滤器集合。以下是如何使用此包中10个过滤器的示例。

DateAfterField, DateBeforeFilter, DateBetweenFilter

use Grixu\QueryBuilderFilters\DateAfterFilter;
use Grixu\QueryBuilderFilters\DateBeforeFilter;
use Grixu\QueryBuilderFilters\DateBetweenFilter;

// In your Controller or HttpQueryBuilder class for the following request:
// GET /users?filter[date_after]=2020-12-01
// GET /users?filter[date_before]=2020-12-01
// GET /users?filter[date_between]=2020-11-01,2020-12-01
$users = QueryBuilder::for(User::class)
    ->allowedFilters([
        AllowedFilter::custom('date_after', new DateAfterFilter(), 'date_field_name'),
        AllowedFilter::custom('date_before', new DateBeforeFilter(), 'date_field_name'),
        AllowedFilter::custom('date_between', new DateBetweenFilter(), 'date_field_name'),
    ])
    ->get();

GreaterThanFilter, GreaterOrEqualThanFilter, LowerThanFilter, LowerOrEqualThanFilter

use Grixu\QueryBuilderFilters\GreaterThanFilter;
use Grixu\QueryBuilderFilters\GreaterOrEqualThanFilter;
use Grixu\QueryBuilderFilters\LowerThanFilter;
use Grixu\QueryBuilderFilters\LowerOrEqualThanFilter;

// GET /users?filter[field_gt]=100
// GET /users?filter[field_gte]=100
// GET /users?filter[field_lt]=100
// GET /users?filter[field_lte]=100
$users = QueryBuilder::for(User::class)
    ->allowedFilters([
        AllowedFilter::custom('field_gt', new GreaterThanFilter(), 'field'),
        AllowedFilter::custom('field_gte', new GreaterOrEqualThanFilter(), 'field'),
        AllowedFilter::custom('field_lt', new LowerThanFilter(), 'field'),
        AllowedFilter::custom('field_lte', new LowerOrEqualThanFilter(), 'field'),
    ])
    ->get();

StartsWithFilter

use Grixu\QueryBuilderFilters\StartsWithFilter;

// GET /users?filter[some]=93
$users = QueryBuilder::for(User::class)
    ->allowedFilters([
        AllowedFilter::custom('some', new StartsWithFilter(), 'some'),
    ])
    ->get();

IsNullFilter, NotNullFilter

use Grixu\QueryBuilderFilters\IsNullFilter;
use Grixu\QueryBuilderFilters\NotNullFilter;

// GET /users?filter[not_null]=some_field
// GET /users?filter[is_null]=some_field
$users = QueryBuilder::for(User::class)
    ->allowedFilters([
        AllowedFilter::custom('is_null', new IsNullFilter()),
        AllowedFilter::custom('not_null', new NotNullFilter()),
    ])
    ->get();

测试

composer test

变更日志

请参阅CHANGELOG以获取更多最近更改的信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件mateusz.gostanski@gmail.com联系,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。