aelfannir / doctrine-query-paginator
简单的、强大的用于搜索、排序、过滤和分页数据库的包
Requires
- php: >=8.0
- doctrine/doctrine-bundle: ^2.4
- doctrine/orm: ^2.7
- guzzlehttp/guzzle: ^7.3
- symfony/console: 5.3.*
- symfony/flex: ^1.3.1
- symfony/yaml: 5.3.*
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/browser-kit: 5.3.*
- symfony/css-selector: 5.3.*
- symfony/maker-bundle: ^1.20
- symfony/phpunit-bridge: 5.3.*
README
请确保已全局安装Composer,如Composer文档中的安装章节所述。
使用Symfony Flex的应用程序
打开命令行,进入您的项目目录,并执行以下命令
$ composer require aelfannir/doctrine-query-paginator
不使用Symfony Flex的应用程序
步骤1:下载Bundle
打开命令行,进入您的项目目录,并执行以下命令以下载此Bundle的最新稳定版本
$ composer require aelfannir/doctrine-query-paginator
步骤2:启用Bundle
然后,通过将其添加到项目中config/bundles.php文件中注册的Bundle列表来启用该Bundle
// config/bundles.php return [ // ... AElfannir\DoctrineQueryPaginator\DoctrineQueryPaginatorBundle::class => ['all' => true], ];
文档
过滤
过滤描述了数据库查询结果中应包含的表属性值的条件。
一个过滤器可以是一个属性过滤器,也可以是一个由多个属性过滤器组成的复合过滤器,这些过滤器使用逻辑"AND"或"OR"操作连接。
复合过滤器可以嵌套。
属性过滤器
属性
类型 string,要过滤的属性名称或ID。
操作符
类型 string,用于生成比较表达式的操作符ID。可能的值包括;
值
可以是以下类型之一 array、string或number
示例
{
"filter": {
"operator": "AND",
"filters": [
{
"property": "createdAt",
"operator": "DATETIME.GTE",
"value": "2021-01-01 00:00"
},
{
"property": "createdAt",
"operator": "DATETIME.LT",
"value": "2022-01-01 00:00"
}
]
}
}
复合过滤器
复合过滤器对象将几个数据库属性过滤器组合在一起。一个复合过滤器甚至可以嵌套在另一个复合过滤器中。
复合过滤器对象包含以下键之一
操作符
用于组合filters的条件,可以是"AND"或"OR"
filters
array的属性过滤器
示例
{
"filter": {
"operator": "OR",
"filters": [
{
"property": "firstName",
"operator": "STRING.EQ",
"value": "Mohammed"
},
{
"operator": "AND",
"filters": [
{
"property": "createdAt",
"operator": "DATETIME.GTE",
"value": "2021-01-01 00:00"
},
{
"property": "createdAt",
"operator": "DATETIME.LT",
"value": "2022-01-01 00:00"
}
]
}
]
}
}
搜索
类型 string,在目标表根属性中搜索
示例
{
"search": "foo"
}
分页
类型 object,应包含用于表格分页工作的元数据。
pagination.page
类型 number,当前页码。
pagination.pages
类型 number,服务器中可用的总页数。
pagination.perPage
类型 number,当前页码。
pagination.total
类型 number,服务器中可用的总记录数。
示例
- 请求
{
"pagination": {
"page": 1,
"perPage": 10
}
}
- 响应
{
"pagination": {
"page": 1,
"perPage": 10,
"total": 100,
"pages": 10
}
}
排序
排序对象描述了数据库查询结果的顺序。数据库查询端点接受一个在sorts body参数中的sort对象数组。在数组中,索引较低的对象具有优先权。每个sort对象包含以下键
属性
类型 string,要排序的属性的名称。
方向
排序方向。可能的值包括"ASC"和"DESC"。
示例
{
"sorts": [
{
"property": "firstName",
"direction": "ASC"
},
{
"property": "lastName",
"direction": "DESC"
}
]
}
连接
表
类型 string,连接表名。
别名
可选,类型 string,请注意,当别名未定义时,表值用作连接表的别名
连接
可选,array的连接条件,
示例
{
"join": [
{
"table": "category",
"join": [
{
"table": "parent",
"alias": "subCategory",
"join": [
{
"table": "parent",
"alias": "subCategory2"
}
]
}
]
}
]
}