Codeigniter与其他非db函数的事务?

时间:2014-06-30 06:32:34

标签: php mysql codeigniter activerecord transactions

是否可以拥有这样的代码?

// send email with email+password and create user (in one transaction)
$this->db->trans_start();
$this->User_model->add_user($user_object);
MY_Controller::send_mail($to, $subject, $mail_data);
$this->db->trans_complete();

这是codeigniter。我使用活动记录类。静态函数send_mail如果失败则返回FALSE,如果受影响的行== 0,则add_user返回FALSE ...

我想在事务中使用非db函数(send_mail),如果失败 - 请回滚。

我知道有类似$this->db->trans_status()的东西,我可以手动运行事务,但我想到这个更好的代码块。 甚至可以通过这种方式在事务中使用非db函数吗?

1 个答案:

答案 0 :(得分:0)

不,您只能在send_mail()失败的情况下进行手动回滚:

if ( ! MY_Controller::send_mail($to, $subject, $mail_data))
{
    $this->db->trans_rollback();
}