如何从 gcloud 数据存储中检索有序数据(使用 php)?

How to retrieve ordered data from gcloud datastore (using php)?

如果我不使用'->order',我可以从数据存储中获取数据。代码在这里,

  $ancestorKey = $datastore->key('usercomment', 'default');
  $query = $datastore->query()
        ->kind('comment')
        ->hasAncestor($ancestorKey)
        ->limit(20);
  $result = $datastore->runQuery($query);

但如果我再添加一行,

  $ancestorKey = $datastore->key('usercomment', 'default');
  $query = $datastore->query()
        ->kind('comment')
        ->hasAncestor($ancestorKey)
        ->order('date', Query::ORDER_DESCENDING)
        ->limit(20);
  $result = $datastore->runQuery($query);

然后,我一无所获。我试图添加一个 index.yaml 文件

indexes:
- kind: comment
  ancestor: yes
  properties:
  - name: date
    direction: desc

仍然没有,请帮助。 非常感谢

在 Google Cloud Datastore 中 date 字段默认为 ascending 顺序。

如果您想按 descending 顺序查询,您需要在 desc 顺序中明确定义日期字段的索引,包括所有其他字段在您的查询中。

另外请务必检查在为实体编制索引时是否从索引中排除了任何字段。

如果您确定所有这些都在 顺序 那么它应该可以工作。

最后发现应该是

->order('date', 'DESCENDING')

而不是 ->order('date', Query::ORDER_DESCENDING)

不知道为什么,但它有效。