bladeaweb / dynamodb-query-builder
There is no license information available for the latest version (0.0.4) of this package.
Amazon DynamoDb query builder.
0.0.4
2020-10-15 06:58 UTC
Requires
- php: >=5.6.0
This package is auto-updated.
Last update: 2025-04-15 16:56:28 UTC
README
Amazon DynamoDb query builder.
$sdk = new \Aws\Sdk( [ 'region' => 'us-west-2', 'version' => 'latest', 'endpoint' => 'http://localhost:8000', 'credentials' => [ 'key' => 'x', 'secret' => 'y', ] ] ); $db = $sdk->createDynamoDb(); $qb = new \Lbstr\DynamoDb\QueryBuilder\QueryBuilder( new \Aws\DynamoDb\Marshaler() ); // batch write $tableName = 'FooBar'; $q = $qb->batchWriteItem() ->put($tableName, ['id' => 1, 'name' => 'foo']) ->put($tableName, ['id' => 2, 'name' => 'baz']) ->delete($tableName, ['id' => 15]) ->delete('AnotherTable', ['id' => 32]) ->put('AnotherTable', ['id' => 32, 'name' => 'bar']) ->getQuery(); $db->batchWriteItem($q); // scan $q = $qb->scan($tableName) ->eq('id', 256) ->orEq('id', 643) ->orContains('status', 'error') ->getQuery(); $q = $qb->scan($tableName) ->withAttributeNames(['#name' => 'name']) ->in('#name', ['foo', 'bat']) ->orIn('id', [256]) ->getQuery(); $q = $qb->scan($tableName) ->withAttributeNames( [ '#name' => 'name' ] ) ->beginsWith('#name', 'f') ->orBeginsWith('#name', 'l') ->getQuery(); $q = $qb->scan($tableName) ->withAttributeNames( [ '#name' => 'name' ] ) ->contains('#name', 'oo') ->orContains('#name', 'az') ->getQuery(); // sub-query example $qb = $qb->scan('MyTable') ->withAttributeNames(['#name' => 'name', '#status' => 'status']) ->eq('#status', 'error') ->subQuery( $qb->scan('MyTable') ->withAttributeNames(['#name' => 'name']) ->beginsWith('#name', 'ja') ->orBeginsWith('#name', 'fo'), 'and' ); /* Array ( [TableName] => FooBar [FilterExpression] => (#status = :571769ca57e29 and (begins_with(#name, :571769ca57eb9) or begins_with(#name, :571769ca57f26))) [ExpressionAttributeValues] => Array ( [:571769ca57e29] => Array ( [S] => error ) [:571769ca57eb9] => Array ( [S] => ja ) [:571769ca57f26] => Array ( [S] => fo ) ) [ExpressionAttributeNames] => Array ( [#name] => name [#status] => status ) )*/ $items = $this->db()->scan($qb->getQuery())['Items'];