gpt4 book ai didi

php - 使用 AWS DynamoDB 和 PHP 进行分页

转载 作者:可可西里 更新时间:2023-10-31 23:48:04 26 4
gpt4 key购买 nike

有人知道对表中的记录进行分页吗?实际上我想用 DynamoDb 在 php 中创建一个分页组件。

似乎不可能像 1,2,3, 4,5... 这样的分页。

因为 Dyanmodb 只是为我们提供了 LIMIT 子句,通过它我们可以读取某些 no。的记录,我们可以通过 LastEvaluatedKey 处理下 n 条记录。那么如果我想直接跳到第5页,怎么可能呢?

据我了解,我们无法在分页中显示页码。我们能做的就是读取特定限制的记录并提供 NEXT 链接以检索下 n 条记录。

分页是任何 Web 应用程序的基本功能,如果迁移到 DynamoDb 等云数据库,我们如何实现?

请提出您的意见和建议。谢谢

最佳答案

是的,你没看错,DynamoDB 中没有OFFSET。但是仅使用 LimitLastEvaluatedKey,我实现了这个功能:

public function scan($table, $filter = [], $select = null, $limit = 2)
{
$page = isset($_GET['page']) ? $_GET['page'] : 0;
$options = [
'TableName' => $table,
'Count' => true,
];

if (!empty($limit)) {
$options['Limit'] = $limit;
}

if (!is_null($select)) {
$options['Select'] = $select;
}

if (!empty($filter)) {
$options['ScanFilter'] = $filter;
}

$results = $results = $this->_client->scan($options);

while ($page > 0 && isset($results['LastEvaluatedKey'])) {
$results = $results = $this->_client->scan($options);
$options['ExclusiveStartKey'] = $results['LastEvaluatedKey'];
$page--;
}

return $results;
}

$this->_client 引用 DynamoDb 客户端对象。
基本上,我使用 LastEvaluatedKey 遍历所有条目,直到到达所需的页面。
要获取表中的总条目,请调用 $this->scan($this->tableName(), [], null, null)['Count']; (即 - 没有任何搜索条件并且没有分页,就像正常的分页功能一样)。

关于php - 使用 AWS DynamoDB 和 PHP 进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23443683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com