aelfannir/doctrine-api-paginator

简单、强大的数据库搜索、排序、过滤和分页包

0.3.0 2021-08-23 09:20 UTC

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。可能的值包括;

可以是以下类型之一 arraystringnumber

示例

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

复合过滤器

一个compound filter对象将多个数据库property filters组合在一起。甚至一个compound filter也可以在另一个compound filter中组合。

compound filter对象包含以下键之一

运算符

用于组合filters的条件,可以是"AND""OR"

filters

array of property filters

示例

{
  "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,应包含datatables分页工作所需的元数据。

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参数中的排序对象数组。在数组中,索引越低的对象优先级越高。每个排序对象包含以下键

属性

类型 string,要排序的属性的名称。

direction

排序方向。可能的值包括 "ASC""DESC"

示例

{
  "sorts": [
    {
      "property": "firstName",
      "direction": "ASC"
    },
    {
      "property": "lastName",
      "direction": "DESC"
    }
  ]
}

连接

table

类型 string,连接表名。

alias

可选,类型 string,请注意,当alias未定义时,表值用作连接表的别名。

join

可选,array of join conditions,

示例

{
  "join": [
    {
      "table": "category",
      "join": [
        {
          "table": "parent",
          "alias": "subCategory",
          "join": [
            {
              "table": "parent",
              "alias": "subCategory2"
            }
          ]
        }
      ]
    }
  ]
}