0

Codeigniter 2.1.4 を使用して、トランザクションを実装しようとしています。トランザクションのポイントを見逃しているかもしれませんが、私がやろうとしているのは、サーバーにファイルをアップロードし、そのファイルのデータベース エントリを作成することです。行の挿入またはファイルのアップロードのいずれかが失敗した場合、どちらも実行したくありません。

これが私のコントローラーの要点です

最初にトランザクションを開く

$this->db->trans_begin();

モデル付きのエントリを追加

$fileId = $this->file_model->addFile('someinfo');

ファイルのアップロードを実行する

$upload = $this->upload->do_upload('file');

両方が合格したことを確認する

//commit
if($fileId AND $upload){
    $this->db->trans_commit();
}

//rollback
else{
    $this->db->trans_rollback();
}

トランザクションは機能せず、アップロードが失敗したかどうかに関係なく、毎回データベース エントリが追加されます。

以前の読書から、トランザクションがモデルに属しているように見えますが、ファイルもアップロードしているので、それはうまくいきません。

これを実装する方法についての考えは?

4

1 に答える 1

1

これを試して:

$this->db->trans_start();

    //Your code Here...

$this->db->trans_complete();

$trans_status = $this->db->trans_status();

if ($trans_status == FALSE) {
    $this->db->trans_rollback();
} else {
    $this->db->trans_commit();
}
于 2015-09-21T11:59:09.437 に答える