composer require mallocapps/php-dynamodb-orm
<?php
if (APPLICATION_ENV == "local" || APPLICATION_ENV == "qa") {
Model::configure(["region" => NETWORK_REGION, "endpoint" => 'http://dynamodb:8000']);
} else {
Model::configure(["region" => NETWORK_REGION]);
}
Manually create object class.
<?php
use MallocApps\DynamoDb\Model;
class User extends Model
{
public static $tableName = 'user';
/**
* DynamoDB Schema Definition
*/
public static $schema = [
"TableName" => "user",
"AttributeDefinitions" => [
[
'AttributeName' => 'id',
'AttributeType' => 'S',
]
],
'KeySchema' => [
[
'AttributeName' => 'id',
'KeyType' => 'HASH',
]
],
'ProvisionedThroughput' => [
'ReadCapacityUnits' => 5,
'WriteCapacityUnits' => 5,
],
];
}
<?php
require_once (__DIR__ . "/../vendor/autoload.php");
Model::configure(["region" => NETWORK_REGION]);
$schemas = [
\Models\User::$schema,
];
echo "Install DBs...";
foreach ($schemas as $schema) {
try {
Model::$client->deleteTable([
"TableName" => $schema['TableName']
]);
} catch (Exception $e) {}
Model::$client->createTable($schema);
}
echo "done\n";
<?php
$user = new User();
$user->id = "my-id";
$user->firstName = "hello";
$user->lastName = "world";
$user->save();
<?php
$user = User::getById('my-id');
$user->lastName = "wood";
$user->save();