0

モデルA、モデルBの2つのモデルがあります。myController の CI のトランザクションで、これらのモデルに関連する 2 つの操作を実装したいと考えています。元:

$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
}

これらのモデルでの 2 つの操作は次のとおりです。

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() は失敗しますが (例: 更新するレコードがない、int フィールドを文字列値で更新する...)、trans_status() は true を返します。updateB() が失敗したときにロールバックする必要があります。直し方?本当にありがとう

4

1 に答える 1