2017-09-13 134 views
0

我已經採用瞭如下所示的Datastore實體。如何獲取數據存儲區的密鑰實體

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

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

我想取鑰匙/實體/實體來說在$ result中的鑰匙,但如果我這樣做:

$Entity->key(); 

返回0(零實體$結果)和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

' - > key()'方法是正確的,請參閱https://github.com/GoogleCloudPlatform/google-cloud-php-datastore/blob/master/Entity.php#L158。其他事情正在發生。 –

+0

好的,但爲什麼如果我做一個查詢如「選擇*從X其中User ='[email protected]'和密碼='xxxxxxxx'」我期望的關鍵值是5659118702428160,但如果我打印出實體 - >鍵()值是1? – PhilCaser

+0

密鑰不是普通值,它們是密鑰種類和密鑰ID對的列表。密鑰ID可能是您提到的那些整數。我不知道PHP,所以我不能說出你究竟打印了什麼,或者它爲什麼看起來像這樣。請查看https://cloud.google.com/datastore/docs/concepts/entities#levels_of_parents,這些是關鍵。不是普通的整數 –

回答

0

正如谷歌表示,「如果你想顯示實體ID給用戶,和/或依賴根據他們的順序,最好的辦法是使用手動分配。'我爲我的實體使用自定義ID並且完美地工作。

相關問題