处理代码点火器中的事务跨越多个模型文件

时间:2012-09-07 11:36:10

标签: php mysql codeigniter transactions

我正在尝试在代码点火器中实现事务。

问题是我的DML语句在多个模型文件中。

我的Controller动作看起来像这样:

//the following is inside a controller
public function myaction()
{
    transaction_start();
    first_model->setSomeData();
    second_model->setSomeData();
    third_model->setSomeData();
    transaction_complete();
}

我正在开发一个mysql数据库,我已经在相关模型innodb中制作了表格,因为我知道引擎支持事务。

上面的代码结构似乎不起作用,因为我故意使第二个模型插入失败。我期望三个插入(三个模型的每个setsomedata方法中的1个)全部失败或全部成功。但事实并非如此

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在codeigniter中调用模型还有一个load->模型函数

<?php
controller extends CI_Controller{
    public function __construct(){
        parent::__construct();
        $this->load->model('FirstModel');
        $this->load->model('SecondModel');
    }
?>

并在某些操作中使用它

<?php
//...
    public function index(){
        $this->FirstModel->getData();
        $this->SecondModel->getData();
    }
//...
?>