Single transaction on multiple model function with CodeIgniter Single transaction on multiple model function with CodeIgniter codeigniter codeigniter

Single transaction on multiple model function with CodeIgniter


You changed places of queries in those examples regarding names in case it matters. I think that you can't have tied transactions between different methods (your second example). But you can and should set your DB related code to model.

So make those queries in model:

// controller code$this->db->trans_start();$this->maincategory_model->first_function($maincategoryData);$this->market_model->second_function($marketData); $this->db->trans_complete();if ($this->db->trans_status() === FALSE) {    throw error        `enter code here`} // Maincategory_model codepublic function first_function($maincategoryData){    return $this->db->insert_batch('maincategory_users_mapping', $maincategoryData);}// Market_model codepublic function second_function($marketData){    return $this->db->insert_batch('market_users_mapping', $marketData);}


First shift your db related operation in module and then start transaction.

Sample code in module,

 First module :function insert_data_market_maincategory($marketData,$maincategoryData){   $status = TRUE;   $this->db->trans_start();   $this->db->insert_batch('market_users_mapping', $marketData);   $this->second_module_name->maincategoryData($maincategoryData)   $this->db->trans_complete();   if ($this->db->trans_status() === FALSE) {     $status = FALSE;   }   return $status; }  second module :  function maincategoryData($data)  {    $this->db->insert_batch('table_name', $data);  }

and your controller call this function

sample code in controller,

function inser_user_data(){   $result = $this->module_name->maincategoryData($marketData,$maincategoryData)   if($result == FALSE)   {       throw error       `enter code here`   }   else   {      //data inserted successfully   }} 


I am using CI 3 and I can use single transaction on multiple model in Controller.I have tried to insert error data to test if rollback or not, the transaction is successfully rollback.

I did not use Tpojka's anwser but my model methods return true or false. Everything seems okay.