【发布时间】:2018-06-05 11:17:35
【问题描述】:
我是 azure table storage 的新手,我正在使用 php 构建一个带有分页链接的表,其中包含来自 azure table storage 的数据。例如,您可以检查here。在 1000 条记录之前一切正常,但是当我转到 1010 条记录时,它会返回此错误:-
失败:代码:400 值:错误请求详细信息(如果有): {"odata.error":{"code":"InvalidInput","message":{"lang":"en-US","value":"一个 的请求输入无效。
所以示例queryPaginationEntitiesSample function {$options->setTop($numPerPage * ($page-1));} 中的这段代码导致了这个错误。有人可以帮我解决这个问题吗?
function queryPaginationEntitiesSample($tableClient,$tableName,$numPerPage,$page,$filter) {
try {
$options = new QueryEntitiesOptions();
$options->setFilter(Filter::applyQueryString($filter));
if($page==1){
$options->setTop($numPerPage);
$options->setSelectFields(array('PartitionKey','RowKey','Timestamp'));
$result = $tableClient->queryEntities($tableName, $options);
$entities = $result->getEntities();
} else{
//skip $numPerPage * ($page-1) records
$options->setTop($numPerPage * ($page-1));
$options->setSelectFields(array('PartitionKey','RowKey','Timestamp'));
$result = $tableClient->queryEntities($tableName, $options);
$nRowKey = $result->getNextRowKey();
$nPartitionKey = $result->getNextPartitionKey();
$options = new QueryEntitiesOptions();
$options->setFilter(Filter::applyQueryString($filter));
$options->setTop($numPerPage);
$options->setNextRowKey($nRowKey);
$options->setNextPartitionKey($nPartitionKey);
$result = $tableClient->queryEntities($tableName, $options);
$entities = $result->getEntities();
}
return $entities;
}catch(ServiceException $e){
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code.": ".$error_message.PHP_EOL;
return null;
}
}
【问题讨论】:
-
$numPerPage设置的值是多少? -
$numPerPage 设置为 10
-
我也在使用 JasonGrimes\Paginator 进行分页
-
请编辑您的问题并包含您正在使用的代码。
-
我现在添加了完整的分页功能
标签: php azure pagination