/** * @param string $tableName * @param array $values */ public function putItems($tableName, $values) { $unprocessedItems = []; foreach ($values as $item) { $unprocessedItems[] = ['PutRequest' => ['Item' => Marshaler::marshal($item)]]; } while (!empty($unprocessedItems)) { $chunks = array_chunk($unprocessedItems, 25); $unprocessedItems = []; foreach ($chunks as $chunk) { $request = ['RequestItems' => [$tableName => $chunk]]; $command = $this->getClient()->getCommand('BatchWriteItem', $request); $response = $this->getClient()->execute($command); if (isset($response->get("UnprocessedItems")[$tableName])) { $unprocessedItems = $unprocessedItems + $response->get("UnprocessedItems")[$tableName]; } } } return $response; }
/** * Creates a condition based on column-value pairs. * @param array $condition the condition specification. * @param array $params the binding parameters to be populated * @return string the generated SQL expression */ public function buildHashCondition($condition, Query &$query) { $parts = []; foreach ($condition as $column => $value) { if (is_array($value) || $value instanceof Query) { // IN condition $parts[] = $this->buildInCondition('IN', [$column, $value], $query); } else { $varname = self::PARAM_PREFIX . count($query->expressionAttributesValues); $query->expressionAttributesValues[$varname] = Marshaler::marshal($value); $parts[] = "{$column}={$varname}"; } } return count($parts) === 1 ? $parts[0] : '(' . implode(') AND (', $parts) . ')'; }