mysql codeigniter активная запись m:m удаление
У меня есть таблица 2 таблицы, которые имеют отношение a m:m, что я могу хотеть, чтобы при удалении строки из одной из таблиц я хотел, чтобы строка в присоединяемой таблице также удалялась, мой sql выглядит следующим образом:
Таблица 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 ;
Таблица 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;
Итак, что я хочу сделать, так это, если строка удалена из table1 и имеет идентификатор 1, я хочу, чтобы строка в таблице также имела эту идею как часть отношения.
Я хочу сделать это в соответствии с классом активной записи codeigniters У меня в настоящее время есть это,
public function deleteJobFeed($feed_id)
{
$this->db->where('id', $feed_id)
->delete('job_feed');
return $feed_id;
}
1 ответ
Попробуйте что-то вроде этого (возможно, я неправильно понял некоторые имена):
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;
}
Кроме того, если вы еще не изучили это, я рекомендую http://www.overzealous.com/dmz/
Это облегчает работу с отношениями. Надеюсь это поможет.