0

J'ai une table 2 tables qui ont am: m relation, ce que je peux vouloir, c'est que lorsque je supprime une ligne de l'une des tables, je veux que la ligne dans la table de jointure soit supprimé ainsi, mon sql est le suivant,mysql codeigniter enregistrement actif m: m suppression

Tableau 1

CREATE TABLE IF NOT EXISTS `job_feed` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `body` text NOT NULL, 
    `date_posted` int(10) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; 

Tableau 2

CREATE TABLE IF NOT EXISTS `job_feed_has_employer_details` (
    `job_feed_id` int(11) NOT NULL, 
    `employer_details_id` int(11) NOT NULL, 
    PRIMARY KEY (`job_feed_id`,`employer_details_id`), 
    KEY `fk_job_feed_has_employer_details_job_feed1` (`job_feed_id`), 
    KEY `fk_job_feed_has_employer_details_employer_details1` (`employer_details_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Donc, ce que je veux faire est, si la ligne est supprimée de table1 et a un ID de 1, je veux que la ligne dans la table à cette idée aussi dans le cadre de la relation.

Je veux le faire en accord avec codeigniters classe d'enregistrement actif J'ai actuellement ce,

public function deleteJobFeed($feed_id) 
    { 
     $this->db->where('id', $feed_id) 
       ->delete('job_feed'); 

     return $feed_id; 
    } 

Répondre

0

Essayez quelque chose comme ça (je l'ai eu quelques-uns des noms mal):

public function deleteJobFeed($feed_id) 
{ 
    //Delete Job Feed 
    $this->db->where('id', $feed_id) 
     ->delete('job_feed'); 

    //Get Related Employer information ID from related table 
    $query = $this>db->where('job_feed_id', $feed_id) 
    ->get('job_feed_has_employer_details'); 
     if ($query->num_rows() > 0) 
     { 
      $row = $query->row(); 
      $employer_details_id = $row->employer_details_id; 
     } 
    //Now you have the employer details id. 
    //You can now delete the row you just got, and then use the id to find the row in the employer details table and delete that. 
    $this>db->where('job_feed_id', $feed_id) 
    ->delete('job_feed_has_employer_details'); 

    //I'm assuming your third table is called "employer details". You said you had a many to many relationship. 
    $this>db->where('employer_details_id', $employer_details_id) 
    ->delete('employer_details'); 

    return $feed_id; 
} 

Aussi, si vous ne l'avez pas regardé, je recommande http://www.overzealous.com/dmz/

Cela facilite les relations de manipulation. J'espère que cela t'aides.

Questions connexes