ninhtqse / bruno
Requires
- laravel/framework: >=5.4
Requires (Dev)
- ninhtqse/architect: dev-master
- satooshi/php-coveralls: dev-master@dev
README
介绍
适用于客户端的分页、排序、查询等功能...
专为Bruno设计
此包名是根据英雄Giordano Bruno的名字命名的。他是一位真正的远见者,敢于梦想超越人们认为可能的事情。由于他的思想和拒绝放弃,他在1600年被活活烧死。[https://vimeo.com/89241669 rel="nofollow noindex noopener external ugc"]我非常推荐观看由Neil deGrasse Tyson讲述的关于他生平的动画短片。
功能
- 解析GET参数以加载相关资源,排序和分页
- 通过使用过滤器组进行高级资源过滤
- 使用ninhtqse\architect来加载外部资源,加载ID或嵌入相关资源
安装
composer require ninhtqse/bruno
可用的查询参数
使用
=======================包括=======================
- 用于获取关联表的数据
- 例如,用户表与blogs表的一对多关联
VD
localhost/users?includes[]=blogs
- 可以包括多个表,如果是(1 - 多),则表名后面将有s:VD
localhost/users?includes[]=blogs&includes[]=options
=======================排序=======================
- 用于根据字段排序数据
- sort需要传递两个值
- 可以传递多个字段进行排序
参数
示例
[ { "key": "title", "direction": "ASC" }, { "key": "year", "direction": "DESC" } ]
VD
localhost/users?sort[0][key]=title&sort[0][direction]=asc&sort[1][key]=title&sort[1][direction]=asc
=======================限制=======================
- 用于获取特定数量的记录
VD
localhost/users?limit=10
=======================页面=======================
- 用于分页。页面必须与limit一起使用
例如:总共有50条记录,但每页只取10条记录 => 总共5页。页面是1到5的数字
localhost/users?limit=10&page=2
=======================Filter_groups=======================
- 用于客户端查询
- Filter_groups有4个参数
参数
运算符
特殊值
[
[
"filters" => [
[
"key" => "acreage"
"operator" => "bt"
"value" => "[101,200]"
"not" => false
]
]
"or" => false
]
]
VD
localhost/users?filter_groups[0][filters][1][key]=hierarchy&filter_groups[0][filters][1][operator]=eq&filter_groups[0][filters][1][value]=13&filter_groups[1][filters][1][key]=floor_plan&filter_groups[1][filters][1][operator]=eq&filter_groups[1][filters][1][value]=1LDK
SQL
select * from `rooms` where (`rooms`.`hierarchy` = 13) and (`rooms`.`floor_plan` = 1LDK)
- filter_groups[0]是上述SQL命令的第一个反引号 | filter_groups[1]是and后的第二个反引号
- 默认情况下,大括号之间将是条件,将是and
- 字段中的小括号将位于大括号中。例如
localhost/users?filter_groups[0][filters][1][key]=hierarchy&filter_groups[0][filters][1][operator]=eq&filter_groups[0][filters][1][value]=13&filter_groups[0][filters][2][key]=floor_plan&filter_groups[0][filters][2][operator]=eq&filter_groups[0][filters][2][value]=1LDK
SQL
select * from `rooms` where (`rooms`.`hierarchy` = 13 and `rooms`.`floor_plan` = 1LDK)
- 字段not:如果为true,则将(toán tử)的(操作符)取反
- 对于filters中的小字段。使用or来替换运算符 => 默认是and
=======================Filter_or=======================
必须具有filter_groups
- 如上所述,“默认情况下,大括号之间将是条件,将是and”
- 如果需要or,请传递
VD
localhost/users?filter_groups[0][filters][1][key]=hierarchy&filter_groups[0][filters][1][operator]=eq&filter_groups[0][filters][1][value]=13&filter_groups[1][filters][1][key]=floor_plan&filter_groups[1][filters][1][operator]=eq&filter_groups[1][filters][1][value]=1LDK&filter_or[0]=true
SQL
select * from `rooms` where (`rooms`.`hierarchy` = 13) or (`rooms`.`floor_plan` = 1LDK)
=======================Fields=======================
用于获取所需字段
- 例如,有100个字段但只取1个字段
localhost/users?fields[]=name&fields[]=test
=======================跳过=======================
用于在sql中获取位置 | 必须与take一起使用
- 例如,使用skip获取10条记录,从第5条记录开始取
localhost/users?skip=5&take=10
=======================Take=======================
用于获取所需的记录数
- 例如,获取10
localhost/users?take=10
=======================Not_fields=======================
用于排除不必要的记录
- 例如:表格有100个字段取99个字段
- 如果使用fields会列出过多的内容
localhost/users?not_fields[]=name