2014-07-07 60 views
0

我有一個保存[hash,number]記錄並希望刪除記錄的應用程序,如果我只有散列。每個散列應該不會有多個記錄,因此批量刪除可能不是最佳選擇。查詢一個dynamoDB表並刪除結果(帶循環)

這是我的理解,我不能對結果刪除直線上升usign哈希,將需要運行一個查詢和iteratoe:Delete rows by id and range condition?

我到目前爲止有:

$dynamoDB = App::make('aws')->get('DynamoDb'); 
    $token = "usertoeknstringthatisthislong" 

    $users = $dynamoDB->query(array(
     "TableName" => 'usertokens', 
     "KeyConditions" => array(
      "token" => array(
       "AttributeValueList" => array (
        array('S' => $token) 
       ), 
       "ComparisonOperator" => "EQ" 
      ) 
     ) 
    )); 
    return $users; 

    foreach ($users as $user) { 

     $dynamoDB->deleteItem(array(
      "TableName" => 'usertokens', 
      "Key" => array(
       "token" => $token, 
       "id" => $user 
      ) 
     )); 

    } 

我無法獲得正確的語法(laravel-4)並且出現錯誤「驗證錯誤:[Key] [id]必須是類型對象[Key] [token]必須是對象類型」

我還沒有能夠找到一個驗證器/ lint程序或其他的意思s進行調試。有人能指引我朝着正確的方向嗎?

回答

0

發現了example這裏刪除項

2在代碼中可能出現的問題:

1)從「令牌」的映射$令牌是不正確的。看到這個例子。 「token」應映射到另一個關聯數組,以便DynamoDB知道該令牌是數字還是字符串。同樣適用於你的「id」映射。

2)也仔細檢查你的迭代。

foreach ($users as $user) 

因爲我認爲查詢返回的實際項目在查詢響應的「項目」字段中。見doc

+0

「還要仔細檢查你的迭代」好的呼叫。一個確實需要做foreach(用戶['Items']爲$ user)。 – user3769145