Php Microsoft azure存储分页查询

Php Microsoft azure存储分页查询,php,azure,azure-storage,azure-sdk-php,Php,Azure,Azure Storage,Azure Sdk Php,此Microsoft azure存储查询工作正常,并从赎回表返回数千条记录。您能否帮助我如何在其中使用start和limit参数进行分页。您可以利用它进行查询和分页。通常,您可以使用从表中选择前(N)个实体,然后为下(N)个实体利用queryEntities()函数请求的nextPartitionKey属性 以下是代码片段: $filter = " ( redemption_code eq '1001') "; $result = $tableRestProxy->queryEn

此Microsoft azure存储查询工作正常,并从赎回表返回数千条记录。您能否帮助我如何在其中使用start和limit参数进行分页。

您可以利用它进行查询和分页。通常,您可以使用从表中选择前(N)个实体,然后为下(N)个实体利用
queryEntities()
函数请求的
nextPartitionKey
属性

以下是代码片段:

$filter = " ( redemption_code eq '1001')  ";    
$result = $tableRestProxy->queryEntities("Redemptions", $filter);
$entities = $result->getEntities();

foreach($entities as $entity){


}
你可以看到一个演示

示范内容如下:


如果使用setTop(),则H过滤器无法工作。否则过滤器工作正常。QueryEntities选项可以使用
setFilter
setTop
在我这方面工作正常。您能为我们更新问题代码片段以重现您的问题吗?
code
$options=newqueryEntitiesOptions()$filter=“(RowKey eq'E1591D1')”$选项->设置过滤器($filter)$选项->设置顶部(5)$tableRestProxy->queryEntities(“赎回”,美元期权);-使用此代码筛选器无法工作<代码>代码$filter=“(赎回代码等式'1001')”$结果=$tableRestProxy->queryEntities(“赎回”),$filter$实体=$result->getEntities();-这正在工作。当您使用
QueryEntitiesOptions
时,错误消息是什么?没有收到任何错误,但无法应用筛选器。它返回的数据没有过滤。我已经尝试了这个分页的例子,它的工作。。。直到你的数据结束。我在表中有大约2500条记录。第1页和第2页都可以正常工作,但是当我调用第3页时,我得到一个400错误的请求:其中一个请求输入无效
$tableRestProxy = ServicesBuilder::getInstance()->createTableService($connectionString);

$options = new QueryEntitiesOptions();
$filter = " ( redemption_code eq '1001') ";
$options->setFilter($filter);
$options->setTop(100);
try {
    $result = $tableRestProxy->queryEntities("Redemptions", $options);
} catch (ServiceException $e) {
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code . ": " . $error_message . "<br />";
}

//query next 100 entities
$nextRowKey = $result->getNextRowKey();
$nextPartitionKey = $result->getNextPartitionKey();
$options->setNextRowKey($nextRowKey);
$options->setNextPartitionKey($nextPartitionKey);
try {
    $next_result = $tableRestProxy->queryEntities("Redemptions", $options);
} catch (ServiceException $e) {
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code . ": " . $error_message . "<br />";
}
use WindowsAzure\Table\Models\Filters\QueryStringFilter;
use WindowsAzure\Table\Models\QueryEntitiesOptions;
$options = new QueryEntitiesOptions();
$filter = new QueryStringFilter("(RowKey eq 'E1591D1')");
$options->setFilter($filter);
$options->setTop(5);
function queryPaginationEntitiesSample($tableClient, $tableName, $numPerPage, $page, $filter) 
{ 
try { 
    $options = new QueryEntitiesOptions(); 
    $options->setFilter(Filter::applyQueryString($filter)); 
    if($page== 1){ 
        $options->setTop($numPerPage); 
        $result = $tableClient->queryEntities($tableName, $options); 
        $entities = $result->getEntities(); 
    } 
    else{ 
        //skip $numPerPage * ($page-1) records 
        $options->setTop($numPerPage * ($page-1)); 
        $options->setSelectFields(array('pk')); 
        $result = $tableClient->queryEntities($tableName, $options); 
        $nextRowKey = $result->getNextRowKey(); 
        $nextPartitionKey = $result->getNextPartitionKey(); 

        $options = new QueryEntitiesOptions(); 
        $options->setFilter(Filter::applyQueryString($filter)); 
        $options->setTop($numPerPage); 
        $options->setNextRowKey($nextRowKey); 
        $options->setNextPartitionKey($nextPartitionKey); 
        $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; 
} 
}