Удалить 2 таблицы и ГДЕ более 3 таблиц - PullRequest
0 голосов
/ 28 сентября 2018

Я хотел бы найти кратчайший способ удалить 2 записи в базе данных.

Эта запись касается трех таблиц (помеченных в следующем коде как "c"), эта таблица является справочной и ее не следует удалять.

Я пытаюсь сделать это, ноэто не удалось.У меня есть простая синтаксическая ошибка или это невозможно в codeigniter или я делаю это по-другому?

$this->db->where(" (a.refid='".$this->session->ud('id')."' and b.refid='".$this->session->ud('id')."') and c.type='".$tempid."' and c.templateid=a.templateid and c.slug=b.slug");
  $this->db->delete('a.*,b.*');
  $this->db->from('table_a a, table_b b, table_c c');
  $delinfo=$this->db->affected_rows();

Дополнительно я объясняю, что я хочу сделать.Я хочу удалить в таблице a - строка, которая имеет "refid" и находится в контакте с таблицей c таблицей "type" b - строка, которая имеет "refid" и находится в контакте с таблицей c таблицей "slug" c -нечего удалять

Надеюсь, я могу объяснить, что мне делать, и спасибо за поддержку

1 Ответ

0 голосов
/ 28 сентября 2018

Здесь вам нужно удалить в сочетании с объединением - Codeigniters QueryBuilder не поддерживает операторы удаления с объединениями - поэтому вы должны написать вместо этого свой собственный

что-то вроде следующего должно работать

$this->db->query('
    DELETE a,b,c FROM table_a a
    JOIN table_c c ON (a.templatedid = c.templateid)
    JOIN table_b b ON (c.slug = b.slug)
    WHERE a.refid = ? AND c.type = ? AND b.refid = ?', 
    array($this->session->ud('id'), $tempid, $this->session->ud('id'))
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...