これは laravel アドベントカレンダー#2 の15日目の記事となっています。
まだまだエンジニアとして未熟ですが、書いていきたいと思います。
baopham/laravel-dynamodbとは
laravelからdynamodbを扱うためのライブラリ です。
Eloquent互換なので、Eloquentのメソッドなどがそのまま使えたりして便利です。
これをインストールから使い方と雑感までを記します。
序盤までしかかけていなかったので、一旦公開して追記していこうと思います。
前提
- laravelやDynamoDB-localのインストールやセットアップは終わっている
- ある程度laravelを知っている(formでPOSTとかできるくらい)
- DynamoDBについてはある程度理解している
DB_CONNECTION=sqlite
環境
laravel 5.5.28
baopham/laravel-dynamodb
dynamodb-local ←今回はlocalでのみ検証します。
インストール
composer require baopham/dynamodb
で 持って来ます。
次に config/app.php
の providers
に以下を追記します。
'providers' => [
...
BaoPham\DynamoDb\DynamoDbServiceProvider::class,
...
];
その後、 php artisan vendor:publish
を実行して、該当のProviderをpublishして利用する準備が整います。
モデルの設定
php artisan make:model <モデル名>
を使ってEloquentのモデルを作りましょう。今回は Memo
というモデルを作ります。
実行したら app/Memo.php
を以下のように編集します。
(use部分をライブラリのモデルに書き換えるのを忘れずに!)
<?php
namespace App;
use BaophamModel¥DynamoDb¥DynamoDbModel as Model;
class Memo extends Model
{
//テーブル名
protected $table = 'memo';
//プライマリキー(今回はメモを書いた人の名前)
protected $primaryKey = 'user';
//複合キーの設定(userをHashキー、dateをRangeキーにする)
protected $compositeKey = ['user', 'date'];
protected $fillable = [
'user',
'date', //Y-m-d H:i:sの形で保存する
'day', //セカンダリインデックスのために用意。Y-m-dだけを保存する
'content', //メモの内容
];
//セカンダリインデックスの設定
protected $dynamoDbIndexKeys = [
'day_of_memo' => [
'hash' => 'day'
],
];
}