CakePHP
  • 文档
    • 书籍
    • API
    • 视频
    • 报告安全问题
    • 隐私政策
    • 标识 & 商标
  • 商业解决方案
  • 周边商品
  • 公路旅行
  • 团队
  • 社区
    • 社区
    • 参与进来
    • 问题 (Github)
    • 烘焙
    • 精选资源
    • 培训
    • 聚会
    • 我的 CakePHP
    • CakeFest
    • 新闻稿
    • 领英
    • YouTube
    • 脸书
    • 推特
    • Mastodon
    • 帮助 & 支持
    • 论坛
    • Stack Overflow
    • IRC
    • Slack
    • 付费支持
CakePHP

C CakePHP 5.1 Chiffon API

  • 项目
    • CakePHP
      • CakePHP
      • Chronos
      • Elastic Search
      • 队列
  • 版本
    • 5.1
      • 5.1
      • 5.0
      • 4.5
      • 4.4
      • 4.3
      • 4.2
      • 4.1
      • 4.0
      • 3.10
      • 3.9
      • 3.8
      • 3.7
      • 3.6
      • 3.5
      • 3.4
      • 3.3
      • 3.2
      • 3.1
      • 3.0
      • 2.10
      • 2.9
      • 2.8
      • 2.7
      • 2.6
      • 2.5
      • 2.4
      • 2.3
      • 2.2
      • 2.1
      • 2.0
      • 1.3
      • 1.2

命名空间

  • 全局
  • Cake
    • 缓存
    • 集合
    • 命令
    • 控制台
    • 控制器
    • 核心
    • 数据库
    • 数据源
      • 异常
      • 定位器
      • 分页
        • 异常
    • 错误
    • 事件
    • 表单
    • HTTP
    • 国际化
    • 日志
    • 邮件
    • 网络
    • ORM
    • 路由
    • 测试套件
    • 实用工具
    • 验证
    • 视图

SimplePaginator 类

简化的分页器,它避免了获取记录总数的潜在昂贵查询。

使用简单分页器时,您将无法生成页码。取而代之的是,只使用上/下翻页控件。

命名空间: Cake\Datasource\Paging

属性概述

  • $_config protected
    array<string, mixed>

    运行时配置

  • $_configInitialized protected
    bool

    配置属性是否已使用默认值配置

  • $_defaultConfig protected
    array<string, mixed>

    默认分页设置。

  • $pagingParams protected
    array

    计算的分页参数。

方法概述

  • _configDelete() protected

    删除单个配置键。

  • _configRead() protected

    读取配置键。

  • _configWrite() protected

    写入配置键。

  • _prefix() protected

    如果可能,将字段名前缀加上表别名。

  • _removeAliases() protected

    如果需要,删除别名。

  • addPageCountParams() protected

    添加 “currentPage” 和 “pageCount” 参数。

  • addPrevNextParams() protected

    添加 “prevPage” 和 “nextPage” 参数。

  • addSortingParams() protected

    添加排序/顺序参数。

  • addStartEndParams() protected

    添加 “start” 和 “end” 参数。

  • buildPaginated() protected

    构建分页结果集。

  • buildParams() protected

    构建分页参数。

  • checkLimit() protected

    检查 limit 参数并确保它在 maxLimit 范围内。

  • configShallow() public

    将提供的配置与现有配置合并。与 config() 方法不同,该方法对嵌套键进行递归合并,而该方法进行简单合并。

  • extractData() protected

    提取所需的分页数据

  • getConfig() public

    返回配置。

  • getConfigOrFail() public

    返回此特定键的配置。

  • getCount() protected

    简单分页不执行任何计数查询,因此此方法返回 null。

  • getDefaults() protected

    获取 $model 的设置。如果没有针对特定存储库的设置,则将使用一般设置。

  • getItems() protected

    获取分页项目。

  • getQuery() protected

    获取用于获取分页结果的查询。

  • mergeOptions() protected

    合并 Paginator 使用的各种选项。从以下位置拉取设置

  • paginate() public

    处理模型记录的自动分页。

  • setConfig() public

    设置配置。

  • validateSort() protected

    验证所需的排序是否可以在 $object 上执行。

方法详情

_configDelete() ¶ protected

_configDelete(string $key): void

删除单个配置键。

参数
string $key

要删除的键。

返回
void
抛出
Cake\Core\Exception\CakeException
如果试图覆盖现有配置

_configRead() ¶ protected

_configRead(string|null $key): mixed

读取配置键。

参数
string|null $key

要读取的键。

返回
mixed

_configWrite() ¶ protected

_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void

写入配置键。

参数
array<string, mixed>|string $key

要写入的键。

mixed $value

要写入的值。

string|bool $merge optional

True 表示递归合并,'shallow' 表示简单合并,false 表示覆盖,默认为 false。

返回
void
抛出
Cake\Core\Exception\CakeException
如果试图覆盖现有配置

_prefix() ¶ protected

_prefix(Cake\Datasource\RepositoryInterface $object, array $order, bool $allowed = false): array

如果可能,将字段名前缀加上表别名。

参数
Cake\Datasource\RepositoryInterface $object

存储库对象。

array $order

排序数组。

bool $allowed optional

字段是否被允许。

返回
array

_removeAliases() ¶ protected

_removeAliases(array<string, mixed> $fields, string $model): array<string, mixed>

如果需要,删除别名。

参数
array<string, mixed> $fields

当前字段

string $model

当前模型别名

返回
array<string, mixed>

addPageCountParams() ¶ protected

addPageCountParams(array $data): void

添加 “currentPage” 和 “pageCount” 参数。

参数
array $data

分页器数据。

返回
void

addPrevNextParams() ¶ protected

addPrevNextParams(array $data): void

添加 “prevPage” 和 “nextPage” 参数。

参数
array $data

分页数据。

返回
void

addSortingParams() ¶ protected

addSortingParams(array $data): void

添加排序/顺序参数。

参数
array $data

分页数据。

返回
void

addStartEndParams() ¶ protected

addStartEndParams(array $data): void

添加 “start” 和 “end” 参数。

参数
array $data

分页器数据。

返回
void

buildPaginated() ¶ protected

buildPaginated(Cake\Datasource\ResultSetInterface $items, array $pagingParams): Cake\Datasource\Paging\PaginatedInterface

构建分页结果集。

由于查询获取了额外的记录,如果获取的记录数超过了限制/每页,则删除最后一条记录。

参数
Cake\Datasource\ResultSetInterface $items
array $pagingParams
返回
Cake\Datasource\Paging\PaginatedInterface

buildParams() ¶ protected

buildParams(array<string, mixed> $data): array<string, mixed>

构建分页参数。

参数
array<string, mixed> $data
返回
array<string, mixed>

checkLimit() ¶ 受保护

checkLimit(array<string, mixed> $options): array<string, mixed>

检查 limit 参数并确保它在 maxLimit 范围内。

参数
array<string, mixed> $options

包含 limit 键的选项数组,用于检查。

返回
array<string, mixed>

configShallow() ¶ 公共

configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this

将提供的配置与现有配置合并。与 config() 方法不同,该方法对嵌套键进行递归合并,而该方法进行简单合并。

设置特定值

$this->configShallow('key', $value);

设置嵌套值

$this->configShallow('some.nested.key', $value);

同时更新多个配置设置

$this->configShallow(['one' => 'value', 'another' => 'value']);
参数
array<string, mixed>|string $key

要设置的键,或完整的配置数组。

mixed|null $value 可选

要设置的值。

返回
$this

extractData() ¶ 受保护

extractData(Cake\Datasource\RepositoryInterface $object, array<string, mixed> $params, array<string, mixed> $settings): array

提取所需的分页数据

参数
Cake\Datasource\RepositoryInterface $object

存储库对象。

array<string, mixed> $params

请求参数

array<string, mixed> $settings

用于分页的设置/配置。

返回
array

getConfig() ¶ 公共

getConfig(string|null $key = null, mixed $default = null): mixed

返回配置。

用法

读取整个配置

$this->getConfig();

读取特定值

$this->getConfig('key');

读取嵌套值

$this->getConfig('some.nested.key');

使用默认值读取

$this->getConfig('some-key', 'default-value');
参数
string|null $key 可选

要获取的键,或 null 表示获取整个配置。

mixed $default 可选

键不存在时的返回值。

返回
mixed

getConfigOrFail() ¶ 公共

getConfigOrFail(string $key): mixed

返回此特定键的配置。

此键的配置值必须存在,不能为 null。

参数
string $key

要获取的键。

返回
mixed
抛出
InvalidArgumentException

getCount() ¶ 受保护

getCount(Cake\Datasource\QueryInterface $query, array $data): int|null

简单分页不执行任何计数查询,因此此方法返回 null。

参数
Cake\Datasource\QueryInterface $query

查询实例。

array $data

分页数据。

返回
int|null

getDefaults() ¶ 受保护

getDefaults(string $alias, array<string, mixed> $settings): array<string, mixed>

获取 $model 的设置。如果没有针对特定存储库的设置,则将使用一般设置。

参数
string $alias

要获取设置的模型名称。

array<string, mixed> $settings

用于组合的设置。

返回
array<string, mixed>

getItems() ¶ 受保护

getItems(Cake\Datasource\QueryInterface $query, array $data): Cake\Datasource\ResultSetInterface

获取分页项目。

获取比 limit 多一行的记录。这有助于推断下一页是否存在。

参数
Cake\Datasource\QueryInterface $query

用于获取项目的查询。

array $data

分页数据。

返回
Cake\Datasource\ResultSetInterface

getQuery() ¶ 受保护

getQuery(Cake\Datasource\RepositoryInterface $object, Cake\Datasource\QueryInterface|null $query, array<string, mixed> $data): Cake\Datasource\QueryInterface

获取用于获取分页结果的查询。

参数
Cake\Datasource\RepositoryInterface $object

存储库实例。

Cake\Datasource\QueryInterface|null $query

查询实例。

array<string, mixed> $data

分页数据。

返回
Cake\Datasource\QueryInterface

mergeOptions() ¶ 受保护

mergeOptions(array<string, mixed> $params, array $settings): array<string, mixed>

合并 Paginator 使用的各种选项。从以下位置拉取设置

  • 通用分页设置
  • 模型特定设置。
  • 请求参数

此方法的结果是所有选项集的组合。您可以更改配置值 allowedParameters 来修改可以使用请求参数设置哪些选项/值。

参数
array<string, mixed> $params

请求参数。

array $settings

要与请求数据合并的设置。

返回
array<string, mixed>

paginate() ¶ 公共

paginate(mixed $target, array $params = [], array $settings = []): Cake\Datasource\Paging\PaginatedInterface

处理模型记录的自动分页。

配置分页

调用 paginate() 时,您可以使用 $settings 参数传递分页设置。这些设置用于构建发出的查询并控制其他分页设置。

如果您的设置包含一个键,该键包含当前表的别名,那么该键内部的数据将被使用。否则,将使用顶层配置。

 $settings = [
   'limit' => 20,
   'maxLimit' => 100
 ];
 $results = $paginator->paginate($table, $settings);

上面的设置将用于对任何存储库进行分页。您可以通过使用存储库别名作为键来配置特定于存储库的设置。

 $settings = [
   'Articles' => [
     'limit' => 20,
     'maxLimit' => 100
   ],
   'Comments' => [ ... ]
 ];
 $results = $paginator->paginate($table, $settings);

这将允许您对 Articles 和 Comments 存储库具有不同的分页设置。

控制排序字段

默认情况下,CakePHP 将自动允许对正在分页的存储库对象上的任何列进行排序。通常您希望允许对关联列或计算字段进行排序。在这种情况下,您需要定义一个允许的列列表,您希望允许对这些列进行排序。您可以在 $settings 参数中定义允许的排序字段

$settings = [
  'Articles' => [
    'finder' => 'custom',
    'sortableFields' => ['title', 'author_id', 'comment_count'],
  ]
];

将空数组作为 sortableFields 传递将完全禁止排序。

使用自定义查找器进行分页

您可以使用 finder 选项对表上定义的任何查找类型进行分页。

 $settings = [
   'Articles' => [
     'finder' => 'popular'
   ]
 ];
 $results = $paginator->paginate($table, $settings);

将使用 find('popular') 方法进行分页。

您也可以将已创建的查询实例传递给此方法

$query = $this->Articles->find('popular')->matching('Tags', function ($q) {
  return $q->where(['name' => 'CakePHP'])
});
$results = $paginator->paginate($query);

范围请求参数

通过使用请求参数范围,您可以在同一个控制器操作中对多个查询进行分页

$articles = $paginator->paginate($articlesQuery, ['scope' => 'articles']);
$tags = $paginator->paginate($tagsQuery, ['scope' => 'tags']);

上面的每个查询都将使用不同的查询字符串参数集来获取分页数据。分页这两个结果的示例 URL 为

/dashboard?articles[page]=1&tags[page]=2
参数
mixed $target

要分页的存储库或查询。

array $params 可选

请求参数

array $settings 可选

用于分页的设置/配置。

返回
Cake\Datasource\Paging\PaginatedInterface
抛出
Cake\Datasource\Paging\Exception\PageOutOfBoundsException

setConfig() ¶ 公共

setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this

设置配置。

用法

设置特定值

$this->setConfig('key', $value);

设置嵌套值

$this->setConfig('some.nested.key', $value);

同时更新多个配置设置

$this->setConfig(['one' => 'value', 'another' => 'value']);
参数
array<string, mixed>|string $key

要设置的键,或完整的配置数组。

mixed|null $value 可选

要设置的值。

bool $merge 可选

是否递归合并或覆盖现有配置,默认为 true。

返回
$this
抛出
Cake\Core\Exception\CakeException
尝试设置无效的键时。

validateSort() ¶ 受保护

validateSort(Cake\Datasource\RepositoryInterface $object, array<string, mixed> $options): array<string, mixed>

验证所需的排序是否可以在 $object 上执行。

只能对字段或 virtualFields 进行排序。方向参数也将被清理。最后,排序和方向键将转换为模型友好的 order 键。

您可以使用 allowedParameters 选项来控制哪些列/字段可通过 URL 参数进行排序。这有助于防止用户对未索引的值进行大量结果集排序。

如果您需要对关联列或合成属性进行排序,则需要使用 sortableFields 选项。

允许的排序字段中列出的任何列都将被隐式信任。您可以使用它对合成列或在自定义查找操作中添加的可能不存在于模式中的列进行排序。

提供给 paginate() 的默认 order 选项将与用户请求的排序字段/方向合并。

参数
Cake\Datasource\RepositoryInterface $object

存储库对象。

array<string, mixed> $options

此请求正在使用的分页选项。

返回
array<string, mixed>

属性详情

$_config ¶ 受保护

运行时配置

类型
array<string, mixed>

$_configInitialized ¶ 受保护

配置属性是否已使用默认值配置

类型
bool

$_defaultConfig ¶ 受保护

默认分页设置。

调用 paginate() 时,这些设置将与您提供的配置合并。

  • maxLimit - 用户可以选择查看的最大限制。默认为 100
  • limit - 每页的初始项目数。默认为 20。
  • page - 起始页,默认为 1。
  • allowedParameters - 用户可以使用请求参数设置的参数列表。修改此列表将允许用户对分页有更多影响,请小心允许的内容。
  • sortableFields - 可用于排序的字段列表。默认情况下,所有表列都可以用于排序。您可以使用此选项将排序限制为特定字段。如果您希望允许对关联列或计算字段进行排序,那么您需要显式指定它们(以及其他字段)。使用空数组将完全禁用排序。
  • finder - 要使用的表查找器。默认为 all。
  • scope - 如果指定,此范围将用于从传递给 paginate() 的查询参数中获取分页选项。范围允许对分页选项进行命名空间化,并允许在同一个操作中对多个模型进行分页。默认 null。
类型
array<string, mixed>

$pagingParams ¶ 受保护

计算的分页参数。

类型
array
OpenHub
Pingping
Linode
  • 商业解决方案
  • 展示
  • 文档
  • 书籍
  • API
  • 视频
  • 报告安全问题
  • 隐私政策
  • 标识 & 商标
  • 社区
  • 参与进来
  • 问题 (Github)
  • 烘焙
  • 精选资源
  • 培训
  • 聚会
  • 我的 CakePHP
  • CakeFest
  • 新闻稿
  • 领英
  • YouTube
  • 脸书
  • 推特
  • Mastodon
  • 帮助 & 支持
  • 论坛
  • Stack Overflow
  • IRC
  • Slack
  • 付费支持

使用 CakePHP API 文档 生成