NOTE: For Version 3 of the AWS SDK for PHP, please see the V3 User Guide and V3 API Reference.

# Class WriteRequestBatch

The BatchWriteItemQueue is a BatchDecorator for Guzzle that implements a queue for sending DynamoDB DeleteItem and PutItem requests. You can add requests to the queue using the easy-to-use DeleteRequest and PutRequest objects, or you can add DeleteItem and PutItem commands which will be converted into the proper format for you. This queue attempts to send the requests with the fewest service calls as possible and also re-queues any unprocessed items.

  Guzzle\Batch\AbstractBatchDecorator implements Guzzle\Batch\BatchInterface
  Aws\DynamoDb\Model\BatchRequest\WriteRequestBatch

Namespace: Aws\DynamoDb\Model\BatchRequest
Located at Aws/DynamoDb/Model/BatchRequest/WriteRequestBatch.php

## Methods summary

- `public static` `factory ( Aws\Common\Client\AwsClientInterface $client, int $batchSize = `Aws\DynamoDb\Model\BatchRequest\WriteRequestBatchTransfer::BATCH_WRITE_MAX_SIZE`, mixed $notify = null )`

  Factory for creating a DynamoDB BatchWriteItemQueue

- `public` `add ( mixed $item )`

  Add an item to the queue

- `public` `flush ( )`

  Flush the batch and transfer the items

## Methods detail

# `public static `Aws\DynamoDb\Model\BatchRequest\WriteRequestBatch``
`factory( `Aws\Common\Client\AwsClientInterface` $client, integer $batchSize = `Aws\DynamoDb\Model\BatchRequest\WriteRequestBatchTransfer::BATCH_WRITE_MAX_SIZE`, mixed $notify = null )`

Factory for creating a DynamoDB BatchWriteItemQueue

#### Examples

- Use WriteRequestBatch to batch several PutItem requests

      $tableName = 'batch-write-test'; // This table has a HashKey named "id"
      $itemIds = array();

      // Put 55 items into the table
      $putBatch = WriteRequestBatch::factory($client);
      for ($i = 0; $i < 55; $i++) {
          $itemIds[] = $itemId = uniqid();
          $putBatch->add(new PutRequest(array(
              'id'        => array('S' => $itemId),
              'timestamp' => array('N' => (string) time()),
          ), $tableName));
      }
      $putBatch->flush();

#### Parameters

$client
  ``Aws\Common\Client\AwsClientInterface``
  $client Client used to transfer requests
$batchSize
  `integer`
  $batchSize Size of each batch. The WriteRequestBatch works most efficiently with a batch size that is a multiple of 25
$notify
  `mixed`
  $notify Callback to be run after each flush

#### Returns

``Aws\DynamoDb\Model\BatchRequest\WriteRequestBatch``
# `public `Aws\DynamoDb\Model\BatchRequest\WriteRequestBatch``
`add( mixed $item )`

Add an item to the queue

#### Examples

- Use WriteRequestBatch to batch several PutItem requests

      $tableName = 'batch-write-test'; // This table has a HashKey named "id"
      $itemIds = array();

      // Put 55 items into the table
      $putBatch = WriteRequestBatch::factory($client);
      for ($i = 0; $i < 55; $i++) {
          $itemIds[] = $itemId = uniqid();
          $putBatch->add(new PutRequest(array(
              'id'        => array('S' => $itemId),
              'timestamp' => array('N' => (string) time()),
          ), $tableName));
      }
      $putBatch->flush();

#### Parameters

$item
  `mixed`
  $item Item to add

#### Returns

``Aws\DynamoDb\Model\BatchRequest\WriteRequestBatch``

#### Overrides

`Guzzle\Batch\AbstractBatchDecorator::add`
# `public array`
`flush( )`

Flush the batch and transfer the items

#### Returns

`array`
Returns an array flushed items

#### Overrides

`Guzzle\Batch\AbstractBatchDecorator::flush`

### Methods inherited from Guzzle\Batch\AbstractBatchDecorator

`__call()`, `__construct()`, `getDecorators()`, `isEmpty()`

### Magic methods summary

## Properties summary

### Properties inherited from Guzzle\Batch\AbstractBatchDecorator

`$decoratedBatch`