부모의 키에서 하위 엔티티를 가져와야합니다. 가능한 경우에도 나는 모른다. 하지만 제가 시도하는 것은 다음과 같습니다 : ancestor key datastore로 엔티티를 얻는 방법은 무엇입니까?
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;
}
그러나 위의 두 경우 모두에서
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;
}
및
는 아무것도 저를 반환하지 않습니다. 내가 뭘 놓치고 있는지 말해 줄 수 있니? 예를 들어이 쿼리 :
SELECT Floor WHERE __key__ HAS ANCESTOR KEY(Building, 'C')
종류 Building
이름 C
으로 루트 개체의 종류 Floor
의 모든 자식 개체를 반환합니다
첫 번째 예에서는 키가 불완전하기 때문에 오류가 발생합니다 (마지막 경로 요소에 ID/이름/식별자 없음). 두 번째 예제가 작동해야합니다. 조상 키와 그것이 반환 할 것으로 기대하는 엔터티의 키의 예를들 수 있습니까? –
예,이 '$ key = $ datastore-> 키 ($ this-> entity_kind, $ this-> entity_key)와 같은 첫 번째 예제에서 엔티티 키를 제공하려고했을 때'결과가 반환되었지만 부모 엔티티에서 ('user'라고 말하면) 하위 엔티티의 키에 대한 기록이 없지만 하위 엔티티를 가져와야합니다 ('service'라고 말하면됩니다). 이제 어떻게 접근해야합니까? 부모 엔티티를 사용하여 하위 엔티티를 가져와야합니다. – MKB
답변을 추가했습니다. 기본적으로 두 번째 예제와 같은 쿼리를 사용해야합니다. 당신의 예제처럼'$ ancestorKey'를 생성하기 만하면, 당신은'hasAncestor ($ this-> parent_key)'를 호출 할 수 있습니다. –