是否可以拥有这样的代码?
// 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函数吗?
答案 0 :(得分:0)
不,您只能在send_mail()
失败的情况下进行手动回滚:
if ( ! MY_Controller::send_mail($to, $subject, $mail_data))
{
$this->db->trans_rollback();
}