ninhtqse/bruno

1.4 2023-07-21 09:21 UTC

This package is auto-updated.

Last update: 2024-09-21 11:41:38 UTC


README

Latest Version Software License Build Status Coverage Status Total Downloads

介绍

适用于客户端的分页、排序、查询等功能...

专为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