トランザクション制御のコードを記述する箇所を一箇所にしたい

110 views
Skip to first unread message

Tatsu Haya

unread,
Sep 1, 2016, 6:26:39 AM9/1/16
to fuelphp.jp
すべてのコントローラのaction呼び出し時に
必ずトランザクションを開始し、正常終了時にコミットするための
コードを一箇所に書きたいのですが、どうすればよいでしょうか。


ベースとなるコントローラのbefore、afterにそれぞれ DB::start_transaction(),  DB::commit_transaction()を
記述し、それを継承したコントローラを使用すると、意図したようになったのですが、
継承したコントローラのactionの処理にResponse::redirectすると、
afterが呼ばれず、コミットされませんでした。

oku...@workgroup.jp

unread,
Sep 1, 2016, 12:34:41 PM9/1/16
to fuelp...@googlegroups.com
Response::redirectの中で、exitされてしまっているので、
Controller::afterは呼ばれないかと思います。

Eventクラスを使って、
DB::in_transaction()を見て、
トランザクションが残っていたら、
DB::commit_transaction()するような関数を、
shutdown_functionに登録したら動作しませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

★ アイ・ティ・コム合同会社
彡彡ミ 奥山 敦二 (Atsuji Okuyama)
)∂∂b mail: oku...@workgroup.jp
( ー 人__ skype: itcom.skype
 ̄/)/ | msn: okuyam...@msn.com
|` ̄ "
Reply all
Reply to author
Forward
0 new messages