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" } ] } ] } ] }