public function testScanWithArray() { $id = intval(getenv('ITEM_ID')); $item = $this->conn->get(getenv('DY_TABLE_RANGE'), $id, 456); $item['strings'] = array('one', 'two'); $this->conn->put($item); $scan = new Context\Scan(); $scan->addFilter('id', ComparisonOperator::EQ, getenv('ITEM_ID')); $scan->addFilter('strings', ComparisonOperator::CONTAINS, 'one'); $items = $this->conn->scan(getenv('DY_TABLE_RANGE'), $scan); foreach ($items as $item) { /** @var $item Item */ $this->assertSame(array('id' => $id, 'name' => 'test 456', 'range' => 456, 'strings' => array(0 => 'one', 1 => 'two')), $item->getArrayCopy()); break; } }
/** * Get items via the scan call * @param string $table The item table * @param Context\Scan|null $context The call context * @return Collection */ public function scan($table, Context\Scan $context = null) { if (null !== $this->logger) { $this->log('Scan on table ' . $table); } $parameters = array('TableName' => $table); if (null !== $context) { $parameters += $context->getForDynamoDB(); } if (null !== $this->logger) { $this->log('Scan request paramaters : ' . print_r($parameters, true), Logger::DEBUG); } $response = $this->connector->scan($parameters); if (null !== $this->logger) { $this->log('Scan request response : ' . print_r($response, true), Logger::DEBUG); $this->log($response['ScannedCount'] . ' scanned items'); } $this->addConsumedReadUnits($table, floatval($response['ConsumedCapacityUnits'])); if (isset($response['LastEvaluatedKey'])) { if (null === $context) { $nextContext = new Context\Scan(); } else { $nextContext = clone $context; } $nextContext->setExclusiveStartKey($response['LastEvaluatedKey']); if (null !== $this->logger) { $this->log('More Items to retrieve'); } } else { $nextContext = null; } $items = new Collection($nextContext, $response['Count']); if (!empty($response['Items'])) { foreach ($response['Items'] as $responseItem) { $item = new Item($table); $item->populateFromDynamoDB($responseItem); $items->add($item); } } if (null !== $this->logger) { $this->log('Find ' . count($items) . ' Items'); } return $items; }