我想通了。我无法从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
);
}
这就是我在Google云数据存储区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
}
}