revenuewire / dynamodb-orm
RW Dynamo ORM
Installs: 4 053
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 10
Forks: 0
Open Issues: 1
Requires
- aws/aws-sdk-php: ^3.257
This package is auto-updated.
Last update: 2024-11-20 00:31:31 UTC
README
composer require revenuewire/dynamodb-orm
Configuration
<?php if (APPLICATION_ENV == "local" || APPLICATION_ENV == "qa") { Model::configure(["region" => NETWORK_REGION, "endpoint" => 'http://dynamodb:8000']); } else { Model::configure(["region" => NETWORK_REGION]); }
Model
Manually create object class.
<?php use RW\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, ], ]; }
Install DB
<?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";
Usage
Create
<?php $user = new User(); $user->id = "my-id"; $user->firstName = "hello"; $user->lastName = "world"; $user->save();
Find one and update
<?php $user = User::getById('my-id'); $user->lastName = "wood"; $user->save();