Codeigniter Transactions
2022-08-30 13:08:00
我正在使用Codeigniter交易
$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->trans_complete();
这工作正常,我遇到的问题是,在内部,我正在调用其他函数,这些函数处理数据库,因此它们包含插入和更新以及一些删除...前任:trans_start
trans_complete
$this->db->trans_start();
$this->utils->insert_function($data);
$this->utils->update_function2($test);
$this->db->trans_complete();
现在,如果执行了这些函数并且发生了一些错误,CodeIgniter将不会执行回滚。
处理此类问题的最佳方法是什么?
我想到的唯一解决方案是从这些函数返回错误,并在这些函数内部添加( 和 )如果它返回错误测试,则执行trans_stat
trans_complete
$this->db->trans_rollback
前任:
$this->db->trans_start();
$result = $this->utils->insert_function($data);
if($result === false){
$this->db->trans_rollback();
}
$this->db->trans_complete();
有没有更好的方法来做到这一点?
更新 1:
根据要求,我正在调用的外部函数的示例:
// insert_function contains
$rec = array(
'numero' => $numero,
'transaction_id' => $id,
'debit' => $product_taxes['amount_without_taxes'],
'date' => $data['date_transaction'],
);
$this->addExerciceAccountingRecords($rec);
and addExerciceAccountingRecords contains
function addExerciceAccountingRecords($records) {
$this->db->insert('transactions_exercices', $records);
}