LoginSignup
7
7

More than 5 years have passed since last update.

laravelからdynamodbを扱うライブラリ baopham/laravel-dynamodbを使ってみた

Posted at

これは 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.phpproviders に以下を追記します。

config/app.php
'providers' => [
    ...
    BaoPham\DynamoDb\DynamoDbServiceProvider::class,
    ...
];

その後、 php artisan vendor:publish を実行して、該当のProviderをpublishして利用する準備が整います。

モデルの設定

php artisan make:model <モデル名> を使ってEloquentのモデルを作りましょう。今回は Memo というモデルを作ります。

実行したら app/Memo.php を以下のように編集します。
(use部分をライブラリのモデルに書き換えるのを忘れずに!)

Memo.php
<?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'
        ],
    ];
}

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7