私は親のキーからサブエンティティを取得する必要があります。私はたとえそれが可能であっても知らない。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;
}
しかし、それは私には何も返されません上記の例の両方で:しかし、私が試したことは以下の通りです。何が欠けているのか教えていただけますか?
キーが不完全(最後のパス要素にID /名前/識別子がありません)ため、最初の例ではエラーが発生します。 2番目の例が有効です。祖先キーとそれが返すことを期待しているエンティティのキーの例を挙げることができますか? –
はい、この '$ key = $ datastore->キー($ this-> entity_kind、$ this-> entity_key)のような最初の例でエンティティキーを与えようとしたときに、結果が返されましたが、親エンティティ( 'user'と言うことができます)にはサブエンティティのキーの記録はありませんが、サブエンティティを取得する必要があります(' service'と言うことができます)。今私はそれにどのように接近すべきですか?サブキーを親キーで取得する必要があります。 – MKB
私は答えを加えました。基本的には、2番目の例のようにクエリを使用する必要があります。あなたの例のように '$ ancestorKey'を構築するのではなく、単に' hasAncestor($ this-> parent_key) 'を呼び出すことができます。 –