我在控制器中调用多个模型,所有模型都进行数据库查询。 我做了类似的事情
public function InsertSale()
{
$this->db->trans_start(TRUE);
// all logic part and models calling which do insert/update/delete
$this->db->trans_complete();
}
上面的代码即使在某些查询后出现问题而无法回滚也无法正常工作。
答案 0 :(得分:0)
在TRUE
中使用$this->db->trans_start(TRUE);
会将事务置于测试模式,这意味着无论发生什么,查询都将被回滚。
如果您想查看查询是否有效,您可以使用:
$this->db->trans_status();
根据结果,返回TRUE / FALSE。
(我知道这是一个老问题,但是,我想我应该在这里找一个答案,因为其他人来看。)
希望这有帮助!
答案 1 :(得分:0)
所以你必须这样跟着
$this->db->trans_start(); # Starting Transaction
$this->db->trans_strict(FALSE);
$this->db->insert('table_name', $someDataArray); # Inserting data
# Updating data
$this->db->where('id', $id);
$this->db->update('table_name', $someDataArray);
$this->db->trans_complete();
这很好用。 Check this answer too