ensi / laravel-query-builder-helpers
此包包含laravel-query-builder扩展
0.1.9
2024-07-31 09:17 UTC
Requires
- php: ^8.1
- laravel/framework: ^9.0 || ^10.0 || ^11.0
- spatie/laravel-query-builder: ^5.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- orchestra/testbench: ^7.0 || ^8.0 || ^9.0
- pestphp/pest: ^1.22 || ^2.0
- pestphp/pest-plugin-laravel: ^1.1 || ^2.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.11
- spaze/phpstan-disallowed-calls: ^2.15
README
laravel-query-builder-helper包是一组类,用于简化Spatie的laravel-query-builder包中可用的过滤器创建。
安装
您可以通过composer安装此包
composer require ensi/laravel-query-builder-helpers
版本兼容性
基本用法
创建过滤器
通过应用静态make方法,然后调用一系列过滤器方法来创建过滤器。
use Ensi\QueryBuilderHelpers\Filters\StringFilter; StringFilter::make('name')->contain()->endWith()->empty();
目前可用的过滤器类如下
- StringFilter
- NumericFilter
- DateFilter
- PlugFilter(传递其他参数到另一个过滤器的占位符)
- ExtraFilter(在“额外过滤器”部分中描述)
每种过滤器类型都有自己的后缀,该后缀被添加到传递给make方法的名称中。例如,默认情况下,过滤器empty的后缀为_empty,过滤器gt的后缀为_gt
NumericFilter::make('rank')->exact()->empty()->gt()->lt();
因此,我们将获得四个可用于搜索查询的过滤器选项。
- rank
- rank_empty
- rank_gt
- rank_lt
将过滤器传递到allowedFilters方法
要将接收到的过滤器传递到Spatie包的allowedFilters
方法,需要对数组进行解构。
$this->allowedFilters([ ...NumericFilter::make('rank')->exact()->empty()->gt()->lt(), ]);
额外过滤器
ExtraFilter类被上述类使用,但也可以单独使用。
有用的方法包括
- nested(注册一组嵌套过滤器)
- predefined(创建包含复杂过滤器的预定义过滤器)
- 和其他方法
...ExtraFilter::nested('page', [ ...InputFilter::make('title', 'page_title')->empty()->exact()->contain(), ]),
配置
在**config.php**文件中,您可以自定义应用的后缀。您还可以在那里设置搜索查询中使用的like运算符。
'suffixes' => [ 'equal' => '', 'greater' => '_gt', 'less' => '_lt', ... ], 'like_operator' => 'LIKE',
贡献
有关详细信息,请参阅CONTRIBUTING
测试
- composer install
- composer test
默认情况下,测试使用内存数据库SQLite进行。SQLite不支持某些函数,例如:json_contains。要测试这些函数,将phpunit.xml.dist
复制到phpunit.xml
,并在php部分中指定配置,以连接到其他数据库。在编写此类测试时,使用skip函数跳过使用默认连接的测试。
->skip(fn () => DB::getDriverName() === 'sqlite', 'db driver does not support this test');
安全漏洞
有关如何报告安全漏洞,请参阅我们的安全策略
许可
MIT许可证(MIT)。有关更多信息,请参阅许可文件