1. Go to this page and download the library: Download cpliakas/dynamo-db-odm library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
cpliakas / dynamo-db-odm example snippets
namespace Acme\Entity;
use Aws\DynamoDb\Enum\Type;
use Cpliakas\DynamoDb\ODM\Entity;
class Book extends Entity
{
// The DynanoDB table name
protected static $table = 'books';
// The attribute containing the hash key
protected static $hashKeyAttribute = 'isbn';
// Optionally set the $rangeKeyAttribute static if appropriate
// Optionally enforce entity integrity
protected static $enforceEntityIntegrity = true;
// Optionally map attributes to data types
protected static $dataTypeMappings = array(
'isbn' => Type::STRING,
);
// Optionally add attribute setters and getters to taste
public function setIsbn($isbn)
{
$this->setAttribute('isbn', $isbn);
return $this;
}
public function getIsbn()
{
return $this->getAttribute('isbn');
}
}
use Aws\DynamoDb\DynamoDbClient;
use Cpliakas\DynamoDb\ODM\DocumentManager;
$dynamoDb = DynamoDbClient::factory(array(
'key' => '<public-key>',
'secret' => '<secret-key>',
'region' => '<aws-region>',
));
$dm = new DocumentManager($dynamoDb);
// Register one or more namespaces that contain entities in order to avoid
// having to pass the fully qualified class names as arguments.
$dm->registerEntityNamesapce('Acme\Entity');
// Instantiate the entity object to model the new document. "Book" is the
// entity's class name as defined in the "Defining Entities" example above.
$book = $dm->entityFactory('Book')
->setHashKey('0-1234-5678-9')
->setAttribute('title', 'The Book Title')
->setAttribute('author', 'Chris Pliakas')
;
// Documents can also act like arrays
$book['copyright'] = 2014;
// Save the document
$dm->create($book);
// Bulk insert
foreach($books as $book) {
$dm->createBatch($book);
}
$dm->flush();
// Read the document
$book = $dm->read('Book', '0-1234-5678-9');
// Update the document
$book['title'] = 'Revised title';
$dm->update($book);
// Delete the document
$dm->delete($book);
// Bulk delete
foreach($books as $book) {
$dm->deleteBatch($book);
}
$dm->flush();
// Assume that the "Thread" entity's table uses the hash and range primary key
// type containing the forumName and subject attributes.
// Load the document by the hash and range keys
$book = $dm->read('Thread', array('PHP Libraries', 'Using the DynamoDB ODM'));
use Aws\DynamoDb\Enum\ComparisonOperator;
// Search for books published after 2010 that don't have the title "Do not read me"
$conditions = Conditions::factory()
->addCondition('title', 'Do not read me', ComparisonOperator::NE)
->addCondition('copyright', 2010, ComparisonOperator::GT)
;
// Search for books with existing attribute 'extra'
$conditions = Conditions::factory()
->addNotNullCondition('extra')
;
$result = $dm->scan('Book', $conditions);
namespace Acme\Entity;
use Cpliakas\DynamoDb\ODM\Entity;
use Cpliakas\DynamoDb\ODM\Renderer as Renderer;
use Cpliakas\DynamoDb\ODM\Transformer as Transformer;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class Book extends Entity
{
// Set statics here ...
public function __construct(EventDispatcherInterface $dispatcher, $data = array())
{
parent::__construct($dispatcher, $data);
$this->addTransformer('created', new Transformer\Date());
}
}