我选择了如下的数据存储区实体。
$query = $Datastore->query()
->kind('Test')
->filter('User', '=', $_POST['txtMail'])
->filter('Password', '=', $_POST['txtPwd']);
$result = $Datastore->runQuery($query);
我想在$ result中获取实体/实体的密钥/密钥,但如果我这样做:
$Entity->key();
返回0($ result中的实体为零)和1,2,3,...如果我有一个或多个实体。 我的数据存储区实体就像:
ID/Name | User | Password
Numeric AutoGen. | String | String
我想要的是这样的事情:
$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 :(得分:0)
正如谷歌所说'如果你想向用户显示实体ID,和/或依赖于他们的订单,最好的办法是使用手动分配。'我为我的实体使用自定义ID并完美地工作
答案 1 :(得分:0)
实际上,有一种方法,Google数据存储区为键对象提供了函数pathEndIdentifier
,您可以像这样使用它:
echo $entity->key()->pathEndIdentifier();
使用您以前的代码,这是一个更好的示例:
$query = $Datastore->query()
->kind('Test')
->filter('User', '=', $_POST['txtMail'])
->filter('Password', '=', $_POST['txtPwd']);
$result = $Datastore->runQuery($query);
foreach ($result as $entity){
// get the entity id using pathEndIdentifier()
echo $entity->key()->pathEndIdentifier();
}
您可以在此处找到使用Google数据存储区的PHP包装器的几个示例: https://github.com/GoogleCloudPlatform/getting-started-php/blob/master/2-structured-data/src/DataModel/Datastore.php