У меня есть 2 модели: modelA, модельB. Я хочу реализовать 2 операции, связанные с этими моделями в транзакции CI в myController. Пример:Вопрос о сделке в CodeIgniter
$this->db->trans_start();
$this->modelA->uodateA(conditions, item);
$this->modelB->updateB(conditions, item);
// with conditions and item is valid
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
//handle when failed
}
Вот две операции в этих моделях:
public function updateA($where = array(), $item = array(), $auth = NULL){
if(!is_array($item) && empty($item)) return FALSE;
if(is_numeric($where)){
$where = array('vote_id'=>$where);
}
$this->db->where($where)->update($this->_table,$item);
return ($this->db->affected_rows() > 0);
}
public function updateB($where = array(), $item = array(), $auth = NULL){
if(!is_array($item) && empty($item)) return FALSE;
if(is_numeric($where)){
$where = array('vote_id'=>$where);
}
$this->db->where($where)->update($this->_table,$item);
return ($this->db->affected_rows() > 0);
}
Хотя updateB() неудачен (Ex: не может иметь запись для обновления, обновления ИНТ поле со значением строки ...), но trans_status() все равно возвращает true. Я хочу, если updateB() не удалось, он должен быть откатом. Как исправить? Большое спасибо
Вы можете разместить свои коды модели тоже? –
@Kishor: Я обновил – secretlm
Пока у вас нет других операторов транзакций в ваших моделях, ваш образец кода должен работать нормально. –