我试图将游标用于大型结果集。该文档表明你可以使用PHP使用GQL查询游标,但我似乎无法使它工作。
有人有这个工作吗?如果它不能与GQL查询一起使用,有人可以向我展示一个如何实现它的示例吗?
<input type="hidden" :value="someData" >
答案 0 :(得分:0)
我想出来了。我无法从GQL查询中找到这个。但是可以从普通查询中获得。
希望这可以帮助某人,因为谷歌文档真的很糟糕的例子。
$datastore = new Google\Cloud\Datastore\DatastoreClient([
'projectId' => $projectId,
]);
function cursor_paging($datastore, $queryKind, $pageSize, $parm1, $startDate, $endDate, $pageCursor = '')
{
$query = $datastore->query()
->kind($queryKind)
->filter('field1', '=', $parm1)
->filter('date', '>=', $startDate)
->filter('date', '<', $endDate)
->limit($pageSize)
->start($pageCursor);
$result = $datastore->runQuery($query);
$nextPageCursor = '';
$entities = [];
foreach ($result as $entity) {
$nextPageCursor = $entity->cursor();
$entities[] = $entity;
}
return array(
'nextPageCursor' => $nextPageCursor,
'entities' => $entities
);
}
这是我使用谷歌云数据存储区php文档中提供的此功能的方式。
$pageSize = 500;
$queryKind = "your_kind";
$result = cursor_paging($datastore, $queryKind, $pageSize, $currentThermostat, $startDate, $endDate);
$countRows = 0;
for ($x=0; $x < $pageSize; $x++) {
$counter = 0;
foreach ($result['entities'] as $item) {
print($countRows . " " . $item['data']);
$countRows++;
$counter++;
}
$result = cursor_paging($datastore, $queryKind, $pageSize, $currentThermostat, $startDate, $endDate, $result['nextPageCursor']);
if ($counter > 0) {
$x = 0;
} else {
$x = $pageSize; //exit loop when no more results
}
}