ricktap / qriteria
自动将URL参数映射到排序、过滤、包含和选择数据,在Laravel 5中提供易于使用的流畅API。默认参数结构与https://jsonapi.fullstack.org.cn规范兼容。
0.6.1
2016-08-13 10:23 UTC
Requires
- php: ^5.6 || ^7.0
- illuminate/database: ^5.2
- illuminate/support: ^5.2
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is not auto-updated.
Last update: 2024-09-14 19:20:12 UTC
README
Qriteria之家:https://github.com/ricktap/Qriteria
Qriteria是由Query和Criteria两个词组合而成的混合词。它的目的是将请求的$_GET参数映射到JSON API规范中描述的filter、fields、sort、include和limit等单词,以便对eloquent模型进行查询。
Qriteria的流畅API允许使用三个查询钩子:
- 基于类的预钩子,在向每个模型实例发送查询之前执行
- 调用查询,在翻译之前调用,在您的预钩子之后,并且仅针对此单个实例对象
- 基于方法的查询,在翻译之后调用,可以像eloquent中的范围方法一样使用
安装
composer require ricktap/qriteria
将以下内容添加到config/app.php中的providers数组中
RickTap\Qriteria\QriteriaServiceProvider::class,
配置
要配置Qriteria,您可以运行以下命令生成config/qriteria.php配置文件
php artisan vendor:publish
过滤
语法
filter=name:like:John%,(age:gt:60|age:lt:20),status:eq:occupied
结果
$query->where("name","LIKE","John%")->where(function ($q) { return $q->where("age",">",60)->orWhere("age","<",20); })->where("status","=","occupied");
描述
每个过滤语句由三个部分组成,由冒号(:)分隔。第一部分表示查询的字段,第二部分是操作,可以是符号或单词(例如,您可以使用=或eq进行相同的操作),第三部分是要比较的值。过滤语句由逗号(,)或管道(|)分隔。逗号表示与,管道表示或。语句可以像数学函数一样用括号括起来,以确定执行顺序。
待办事项
- 编写更全面的文档,甚至可能是一个维基百科
- 编写更多的测试
- 增加更多的检查
- 将eq映射到=,lt映射到<等
- 将可搜索特征拆分为两个独立的特征。一个用于过滤,一个用于Qriteria本身
- 进一步验证用户输入,目前我只是在检查括号是否平衡且有序