DBの処理を書くときに気を付けたいのがトランザクション処理ですが、Laravelを触る時は皆さんどう書いてますかね?
今の現場で以下のように書いている人がいたので、これがベストプラクティスなのか気になって調べてみた。
try
{
// InsertとかupdateとかのDB処理
} catch(exception e)
{
// エラー内容の表示
}
Laravelの場合、これはベストプラクティスではなくDB::transactionを使う方が良さ気です。
参考URL:
http://forumsarchive.laravel.io/viewtopic.php?id=1464
http://localdisk.hatenablog.com/entry/2013/12/29/Laravel_%E3%81%A7%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
DB::transactionを使うとエラーになった場合自動でロールバックまで行ってくれるので便利ですねー!
なので、LaravelでDB処理を書く際は以下のように書くのが良いみたいです。
$table = Table::find(1);
DB::transaction(function() use($table) {
// InsertとかupdateとかのDB処理
$table->save();
});
こっちの方がかなりスッキリ記述できますね!
一つ注意点として
DB処理以外をDB::transactionの中に書かないこと!