「新しい挑戦、新しい視点」
よしだ
とある人材紹介会社のマーケティング部門のデータエンジニア(自称)
好きな言語: Groovy
好きなIDE: IntelliJ IDEA
Scala歴: 3年(2015~)
ScalaMatsuri 2016, 2017, 2018 スタッフ
update文、使わなくてもロジック組めるよって分かると、update使わなくなるなぁ
— とーます (@grimrose) 2017年8月30日
イミュータブルデータ・モデルを1年使ってみてどうだったかを端折って
// イベントの登録
$event = new Event();
...
$id = DB::table('登録イベントテーブル')->insertGetId($event->as_array());
// 現在のレコードを取得
$record = DB::table('登録イベントテーブル')->where('id', '=', $id)->get();
// 履歴テーブルへのinsert
DB::table('登録イベント履歴テーブル')->insert($record->as_array());
// 前イベントIDのレコードを削除
$previousId = $record->id;
DB::table('登録イベントテーブル')->where('id', '=', $previousId)->delete();
// イベントの登録
$event = new Event();
$event->previousId = $previousId;
...
$id = DB::table('登録イベントテーブル')->insertGetId($event->as_array());
ORMについて
$storedId = (is_null($entity->id)) ? insert($entity) : update($entity)
パフォーマンス
データモデルは、要件に合わせて採用しましょう。