Beispiel #1
0
 /**
  * @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) . ')';
 }