首页 > 解决方案 > 如何从 gcloud 数据存储中检索有序数据(使用 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

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

标签: phpgclouddatastore

解决方案


在 Google Cloud Datastore中,日期字段默认按升序排列。

如果要按降序查询,则需要按降序显式定义日期字段的索引,包括查询中的所有其他字段。

还要确保在索引实体时检查是否从索引中排除了任何字段。

如果您确定所有这些都井井有条,那么它应该可以工作。


推荐阅读