如何通过祖先键数据存储获取实体?

How to get entity by ancestor key datastore?

我需要从父项的键中获取一个子实体。我不知道即使它可能。但我的尝试如下:

public function get_service_details(){
     $datastore = new Google\Cloud\Datastore\DatastoreClient(['projectId' => $this->config->item('google_project_id')]);
     $key = $datastore->key($this->entity_kind);

     $key->ancestor($this->parent_kind, $this->parent_key);
     $server_config_details = $datastore->lookup($key);
     return $server_config_details;
}

public function get_service_details(){
     $datastore = new Google\Cloud\Datastore\DatastoreClient(['projectId' => $this->config->item('google_project_id')]);
     $ancestorKey = $datastore->key($this->parent_kind, $this->parent_key);
     $query = $datastore->query()
        ->kind($this->entity_kind)
        ->hasAncestor($ancestorKey);

     $server_config_details = $datastore->runQuery($query);
     return $server_config_details;
}

但在上述两种情况下,它都没有返回给我。你能告诉我我错过了什么吗?

您可以使用祖先查询来查找子实体:

例如,这个查询:

SELECT Floor WHERE __key__ HAS ANCESTOR KEY(Building, 'C')

将return种类Building和名称C的根实体的种类Floor的所有子实体:

[Building:C, Floor:1]
[Building:C, Floor:2]

查找(与查询相反)要求您提前知道完整的密钥,因此它们不能用于查找根实体的子实体。