helium / laravel-dynamodb
dev-master
2019-09-13 15:39 UTC
Requires
This package is auto-updated.
Last update: 2020-04-29 16:46:49 UTC
README
Laravel 创建DynamoDB "迁移"的插件
安装
composer require helium/laravel-dynamodb
用法
配置
将以下行添加到你的 app.php
文件中的 package 服务提供者部分
Helium\DynamoDb\DynamoDbServiceProvider::class,
将以下行添加到你的 database.php
文件中的数据库连接部分
'dynamodb' => [
'group' => env('APP_NAME'),
'region' => env('DYNAMO_REGION'),
'version' => env('DYNAMO_VERSION', 'latest'),
//'endpoint' => env('DYNAMO_HOST'),
'credentials' => [
'key' => env('DYNAMO_KEY'),
'secret' => env('DYNAMO_SECRET'),
]
],
如果你使用的是 AWS 默认之外的其他端点,可以取消注释 endpoint
键值对。
可选,将默认连接设置为 dynamodb
。
迁移
创建迁移
php artisan make:migration
将 use Illuminate\Database\Schema\Blueprint;
替换为 use Helium\DynamoDb\Schema\Blueprint;
如果你没有将 dynamodb
设置为默认连接,请指定正确的连接
Schema::connection('dynamodb')->...
支持的 schema 函数
create($table, $callback)
- 创建新表drop($table)
- 删除表dropIfExists($table)
-drop
的别名
支持的 blueprint 函数
string($name)
- 创建一个类型为S
的新属性number($name)
- 创建一个类型为N
的新属性binary($name)
- 创建一个类型为B
的新属性partitionKey($name)
- 使用之前创建的属性名设置表分区键sortKey($name)
- 使用之前创建的属性名设置表排序键globalSecondaryIndex($name)
- 创建新的全局二级索引partitionKey($name)
- 使用之前创建的属性名设置索引分区键sortKey($name)
- 使用之前创建的属性名设置索引排序键
localSecondaryIndex($name)
- 创建新的本地二级索引sortKey($name)
- 使用之前创建的属性名设置索引排序键- 请注意,分区键可能不能手动设置,它将根据 AWS 规范 自动设置为表的分区键。
示例
public function up() {
Schema::connection('dynamodb')->create('Account', function (Blueprint $table) {
$table->number('id');
$table->string('email');
$table->binary('active');
$table->partitionKey('id');
$table->sortKey('email);
$table->globalSecondaryIndex('byEmail')
->partitionKey('email')
->sortKey('active');
$table->localSecondaryIndex('byActive')
->sortKey('active');
});
}
public function down() {
Schema::connection('dynamodb')->dropIfExists('Account');
}
请注意,创建的表将被赋予格式 ProjectName.TableName
。这是为了提供一些组织性,并防止项目之间的重复表,因为DynamoDB不支持单个实例内的单独“数据库”或“集合”,这与许多其他数据库系统标准不同。