2017-09-13 5 views
0

J'ai pris une entité Datastore comme ci-dessous.Comment puis-je obtenir la clé d'un magasin de données Entité

$query = $Datastore->query() 
      ->kind('Test') 
      ->filter('User', '=', $_POST['txtMail']) 
      ->filter('Password', '=', $_POST['txtPwd']); 

$result = $Datastore->runQuery($query); 

Je voudrais prendre la clé/clés de l'entité/Entitys dans le résultat de $, mais si je fais:

$Entity->key(); 

a été renvoyé 0 (zéro Entité $ result) et 1, 2,3, ... si j'ai une ou plusieurs entités. entité Mon Datastore était comme:

ID/Name   |  User  |   Password 
Numeric AutoGen. | String   | String 

Ce que je veux faire est quelque chose comme ceci:

$query = $Datastore->query() 
      ->kind('Test') 
      ->filter('User', '=', $_POST['txtMail']) 
      ->filter('Password', '=', $_POST['txtPwd']); 

$result = $Datastore->runQuery($query); 
foreach ($result as $entity){ 
    /*how to get entity key from here*/ 
} 
+0

La méthode '-> key()' est la bonne, voir https://github.com/GoogleCloudPlatform/google-cloud-php-datastore/blob/master/Entity.php#L158. Quelque chose d'autre se passe. –

+0

Ok, mais pourquoi si je fais une requête comme "SELECT * FROM X où User = '[email protected]' AND Password = 'xxxxxxxx'" Je m'attends à la valeur de clé était 5659118702428160 mais si j'imprime l'Entité-> Touche() la valeur est 1? – PhilCaser

+0

Les clés ne sont pas des valeurs simples, ce sont des listes de paires de types de clé et d'ID de clé. Les ID de clé peuvent être des entiers comme ceux que vous mentionnez. Je ne connais pas PHP, donc je ne sais pas exactement ce que vous imprimez ou pourquoi ça ressemble à ça. Vérifiez https://cloud.google.com/datastore/docs/concepts/entities#levels_of_parents, ce sont des clés. –

Répondre

0

Comme Google a dit: « Si vous voulez afficher les ID d'entité à l'utilisateur, et/ou dépendent lors de leur commande, la meilleure chose à faire est d'utiliser l'allocation manuelle. "J'ai utilisé des ID personnalisés pour mon entité et fonctionne parfaitement.