Php Microsoft azure存储分页查询
此Microsoft azure存储查询工作正常,并从赎回表返回数千条记录。您能否帮助我如何在其中使用start和limit参数进行分页。您可以利用它进行查询和分页。通常,您可以使用从表中选择前(N)个实体,然后为下(N)个实体利用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
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;
}
}