blu3code/dynamodb-laravel

此包已被弃用,不再维护。未建议替代包。

AWS DynamoDB 适配器用于 Laravel

此包尚未发布版本,信息很少。


README

AWS DynamoDB Eloquent ORM 驱动程序

先决条件

  • PHP 8.3
  • Laravel 10+

安装

1. 通过 composer 安装

$ composer require blu3code/dynamodb-laravel

2. 修复 DynamoDB 配置文件(config/database.php)

'dynamodb' => [
    'key' => env('DYNAMODB_KEY_ID'),
    'secret' => env('DYNAMODB_ACCESS_KEY'),
    'region' => env('DYNAMODB_REGION'),
    'endpoint' => env('DYNAMODB_ENDPOINT'),
]

修改您的环境

DYNAMODB_KEY_ID={AWS IAM Key ID}
DYNAMODB_ACCESS_KEY={AWS IAM Access Key}
DYNAMODB_REGION={AWS Region code}
# only for dynamodb-local
DYNAMODB_ENDPOINT=http://127.0.0.1:8080

使用方法和示例

模型结构

namespace App\Models\DynamoDB;

use Blu3\DynamoDB\Eloquent\Model;

class User extends Model {
    // Not necessary. Can be obtained from class name MyTable => my_tables
    protected string $table = 'users';
}

查找模型实例并更新属性

use App\Models\DynamoDB\User;

$user = User::findOrFail('0e00232f-c55d-4879-bb31-236f2eea82f9');
$user->update([
    'filename' => '1234.jpg' 
]);

创建新模型

use App\Models\DynamoDB\User;

$user = new User();
$user->fill([
    'id' => str()->uuid()->toString(),
    'name' => 'Alex'
]);
$user->save();

创建模型的其他方式

use App\Models\DynamoDB\User;

$user = User::create([
    'id' => str()->uuid()->toString(),
    'name' => 'Alex'
]);

属性类型转换

namespace App\Models\DynamoDB;

use Blu3\DynamoDB\Eloquent\Model;

class User extends Model {
    protected string $dateFormat = 'Y-m-d H:i:s.v';
    protected array $casts = [
        'roles' => 'array',
        'created_at' => 'datetime',
    ];
}
use App\Models\DynamoDB\User;
use Carbon\CarbonImmutable;

$user = new User();
$user->fill([
    'id' => str()->uuid()->toString(),
    'name' => 'Alex',
    'roles' => ['admin', 'manager'],
    'created_at' => CarbonImmutable::now()
]);
$user->save();

高级使用

使用强一致性读取查找模型

use App\Models\DynamoDB\User;

$user = User::query()->withConsistentRead(true)->findOrFail($id);

始终使用强一致性读取查找模型

namespace App\Models;

use Blu3\DynamoDB\Eloquent\Model;

class User extends Model {
    private bool $consistentRead = true;
}