忍者ブログ
 

東京・赤坂のシステム開発会社プラムザで働く、プログラマーの学習記録。

Laravel4.2 データベースのトランザクション

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

Laravel4.2 データベースのトランザクション

Laravelでデータベースのトランザクションを使用する場合、二つやり方がある。

1. クロージャの中に処理を記述する。

DB::transaction(function()
{
    $row = App::make('DbTable')->find(1);
    $row->value = 'hoge';
    $row->save();
});

良い点: なんとなく直感的。

悪い点: クロージャーの中に値を渡すのが面倒。

use($var) で渡す変数をオブジェクトなり、配列なりにして必要な値を全てまとめれば良いような気もする。そもそも、クロージャーの使い所がいまいち理解できていない。

2. トランザクションの開始と終了をメソッドで宣言する。

トランザクションの開始

DB::beginTransaction();

トランザクションをコミットする。

DB::commit();

トランザクションをロールバックする。

DB::rollback();

例)

DB::beginTransaction();

try {
    $row = App::make('DbTable')->find(1);
    $row->value = 'hoge';
    $row->save();
    DB::commit();
} catch (Exception $e) {
    Log::error($e);
    DB::rollback();
}

良い点: 柔軟に記述できる。

悪い点: 明示的に記述しなければいけないのが若干面倒。

PR

コメント

プロフィール

HN:
はと
性別:
非公開

P R