slava-ponomarenko / dynamodb
DynamoDb 的 Laravel 模型和辅助工具包装器
0.2.2
2016-05-05 10:52 UTC
Requires
- aws/aws-sdk-php: ^3.0.0
- illuminate/database: ~5.1
- illuminate/support: ~5.1
- paragonie/random_compat: ^1.1
Requires (Dev)
- phpunit/phpunit: ^5.0@dev
This package is not auto-updated.
Last update: 2024-09-20 19:19:48 UTC
README
支持所有键类型 - 主哈希键和组合键。
安装
-
Composer 安装
composer require baopham/dynamodb:0.2.2
-
安装服务提供者
// config/app.php 'providers' => [ ... BaoPham\DynamoDb\DynamoDbServiceProvider::class, ... ];
-
将 DynamoDb 配置放在
config/services.php// config/services.php ... 'dynamodb' => [ 'key' => env('DYNAMODB_KEY'), 'secret' => env('DYNAMODB_SECRET'), 'region' => env('DYNAMODB_REGION'), 'local_endpoint' => env('DYNAMODB_LOCAL_ENDPOINT'), // see http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html 'local' => env('DYNAMODB_LOCAL'), // true or false? should use dynamodb_local or not? ], ...
使用方法
- 通过扩展
BaoPham\DynamoDb\DynamoDbModel来扩展你的模型,然后你可以使用支持的方法。这里的想法是你可以切换回 Eloquent 而不需要更改你的查询。
支持的方法
// find and delete $model->find(<id>); $model->delete(); // Using getIterator(). If 'key' is the primary key or a global/local index and the condition is EQ, will use 'Query', otherwise 'Scan'. $model->where('key', 'key value')->get(); // See BaoPham\DynamoDb\ComparisonOperator $model->where(['key' => 'key value']); // Chainable for 'AND'. 'OR' is not supported. $model->where('foo', 'bar') ->where('foo2', '!=' 'bar2') ->get(); // Using scan operator, not too reliable since DynamoDb will only give 1MB total of data. $model->all(); // Basically a scan but with limit of 1 item. $model->first(); // update $model->update($attributes); $model = new Model(); // Define fillable attributes in your Model class. $model->fillableAttr1 = 'foo'; $model->fillableAttr2 = 'foo'; // DynamoDb doesn't support incremented Id, so you need to use UUID for the primary key. $model->id = 'de305d54-75b4-431b-adb2-eb6b9e546014' $model->save();
- 或者,如果你想将你的数据库表与 DynamoDb 表同步,使用特性
BaoPham\DynamoDb\ModelTrait,它将在模型保存后调用PutItem。
组合键
要使用组合键与你的模型一起使用
- 将
$compositeKey设置为包含键属性名称的数组,例如。
protected $primaryKey = ['customer_id']; protected $compositeKey = ['customer_id', 'agent_id'];
- 要查找具有组合键的记录
$model->find(['id1' => 'value1', 'id2' => 'value2']);
测试
运行
$ java -Djava.library.path=./DynamoDBLocal_lib -jar dynamodb_local/DynamoDBLocal.jar --port 3000 $ ./vendor/bin/phpunit
-
DynamoDb 本地版本:2015-07-16_1.0
-
由DynamoDb 本地壳创建的测试用例的 DynamoDb 本地模式位于这里
需求
Laravel ^5.1
待办事项
- 升级一些遗留属性:
AttributesToGet,ScanFilter,...
许可协议
MIT
作者和贡献者
- Bao Pham
- warrick-loyaltycorp