Laravelでトランザクションを張る方法メモ
方法は2つ
- DBファサードの
beginTransaction()
、commit()
、rollBack()
を使用する。 - DBファサードの
transaction()
メソッドにクロージャを渡す。
1の方法
public function create(Request $request)
{
try {
DB::beginTransaction(); //トランザクション開始
$author = Author::create($request->all());
DB::commit(); //コミット
} catch(\Exception $e) {
DB::rollBack(); //ロールバック
}
}
beginTransaction()
でトランザクションを開始して、問題がなければcommit()
でコミット
例外が発生すればrollBack()
でロールバックされる。
2の方法
public function create(Request $request)
{
DB::transaction(function() use($request) {
$author = Author::create($request->all());
});
}
問題がなく処理が実行されれば、自動的にコミットされる。
例外やエラーが発生した場合は自動的にロールバックされる。