aelfannir/doctrine-query-paginator

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

安装: 84

依赖者: 0

建议者: 0

安全: 0

星级: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

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

复合过滤器

复合过滤器对象将几个数据库属性过滤器组合在一起。一个复合过滤器甚至可以嵌套在另一个复合过滤器中。

复合过滤器对象包含以下键之一

操作符

用于组合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"
            }
          ]
        }
      ]
    }
  ]
}