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


handling transactions in code igniter spanning multiple model files

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

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

我的控制器操作看起来是这样的:

//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个)都会失败或成功。但并非如此

有什么想法吗?

要调用代码点火器中的模型,有一个load->model函数

<?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();
    }
//...
?>