2016-12-20 3 views
2

das Modell einfach i 2 Zeilen aus Tabellen löschen müssen, die die parcelas Tabelle gelöscht Kaskade Fremdschlüssel haben, haben die Assoc Tabelle doesnt Fremdschlüsselmysql Transaktion nicht verpflichtet Codeigniter 3

der Controller

if($this->delete_model->delete_parcela_model($this->input->post('id_parcela_delete'),$this->input->post('id_loteo_delete'),$this->input->post('id_user_delete'))) 
     { 
      echo 'deleted'; 
      exit(1); 

     } 
     else 
     { 
      echo 'error'; 
      exit(1); 

     } 

und der Funktionsaufruf im Modell ist

function delete_parcela_model($id_parcela,$id_pago,$id_user) 
{ 

    $this->db->trans_begin(); 
    $this->db->query('delete from parcela where id_parcela = "'.$id_parcela.'" and id_dueno = "'.$id_user.'"'); 
    $this->db->query('delete from es_dueno_assoc where tipo_dueno_id = "'.$id_parcela.'" and user_id = "'.$id_user.'"'); 


    if ($this->db->trans_status() === FALSE) 
    { 
     // generate an error... or use the log_message() function to log your error 
     $this->db->trans_rollback(); 
     return false; 
    } 
    else 
    { 
     $this->db->trans_commit(); 
     return true; 

    } 

immer true zurück, aber die Transaktion verpflichtet ist nicht ....

Antwort

0

Ich bin mir nicht sicher, warum trans_status() nicht zurückkehren, aber ich würde die eingebaute Helfer aus der Codeigniter Datenbank Helfer wie diese verwenden und wir können versuchen und beheben:

$this->db->delete($this->tables['parcela'], array("id_parcela" => $id_parcela, "id_dueno" => $id_user)); 

Dann können Sie sehen, testen dies durch einige Protokollierung hinzugefügt, so dass Sie sehen können, was $ this-> db-> affected_rows() ausgibt:

var_dump($this->db->affected_rows()); 
var_dump($this->db->affected_rows() === FALSE); 
die(); 

Dann können Sie versuchen, den richtigen Wert zu bekommen. Überprüfen Sie auch this Seite für mehr Details.