У меня есть простая маленькая таблица, которую я просто хочу обновить. Проводили часы в документах и проверяли вещи, не могу понять это.DynamoDB PHP update-item
Мой стол:
|environment |who|
-------------------
|ax |tom|
Первичный ключ на «окружающую среду»
Все, что я хочу сделать, это установить «кто» в «Бен», где «окружающая среда» = «топор».
Я пробовал как старый способ делать вещи, так и способ выражения. Я также попробовал как квадратные скобки, обозначенные AWS, используемыми в своих документах, так и массив() нотации php. Ниже приведены некоторые из способов, которыми я пытался это сделать.
1:
$result = $client->updateItem(array(
'ConditionExpression' => 'environment = :env',
'ExpressionAttributeValues' => array(
':env' => array(
'S' => 'environment'
),
':who' => array(
'S' => $who
)
),
'Key' => array(// REQUIRED
':env' => array(
'S' => $env
)
),
'ReturnValues' => 'UPDATED_NEW',
'TableName' => 'areas',
'UpdateExpression' => 'SET who = :who'
));
2:
$result = $client->updateItem([
'ConditionExpression' => 'environment = :env',
'ExpressionAttributeValues' => [
':env' => [
'S' => 'environment'
],
':who' => [
'S' => $who
]
],
'Key' => [
':env' => [
'S' => $env
]
],
'ReturnValues' => 'UPDATED_NEW',
'TableName' => 'areas',
'UpdateExpression' => 'SET who = :who'
]);
3:
$result = $client->updateItem(array(
'AttributeUpdates' => array(
'who' => array(
'Action' => 'PUT',
'Value' => array(
'S' => $who
)
)
),
'Key' => array(
'environment' => array(
'S' => $env
)
),
'TableName' => 'areas'
));
Edit: Это ошибка, я получаю:
SerializationException (client): Start of list found where not expected - {"__type":"com.amazon.coral.service#SerializationException","Message":"Start of list found where not expected"}'
Любая помощь с этим очень ценится.
Какие сообщения об ошибках вы получаете? Ваш пост читается как заявление, а не вопрос. Какая проблема? –
@MarkB Я обновил сообщение, чтобы теперь включить сообщение об ошибке, которое я получаю. Я получаю ту же ошибку с каждым из различных способов, я пытаюсь это сделать. –