Как обновить таблицу в codeigniter с внутренним объединением? - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу преобразовать этот запрос Mysql в Query Builder Codeigniter

Запрос работает в mysql, но не работает в codeigniter

Mysql

UPDATE tbl_person p
INNER JOIN tbl_family_victim f  ON  p.id_person = f.id_person
SET p.active = 0
WHERE f.id_prisoners = 32;

Codeigniter

public function delete_all($id_pris){
   $this->db->join('tbl_family f','p.id_person = f.id_person');
   $this->db->set('p.active', '0');
   $this->db->where('f.id_prisoners', $id_pris);
   $data_result = $this->db->update('tbl_person p');
   return  $data_result;
}

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

В вашем скрипте есть минутная ошибка, вы пропустили псевдоним ведомой таблицы

ВЕРСИЯ 1

public function delete_all($id_pris){
   $this->db->join('tbl_family f','p.id_person = f.id_person',"inner"); // you missed `f` here
   $this->db->set('p.active', '0');
   $this->db->where('f.id_prisoners', $id_pris);
   $data_result = $this->db->update('tbl_person p');
   return  $data_result;
}

Это должно работать нормально.

ВЕРСИЯ 2

$this->db->set('p.active', '0');
$this->db->where('f.id_prisoners', $id_pris);
$this->db->where('p.id_person = f.id_person')
$data_result = $this->db->update('tbl_family as f, tbl_person as p');
return $data_result;

ВЕРСИЯ 3

$sql = "
UPDATE tbl_person p
INNER JOIN tbl_family_victim f  ON  p.id_person = f.id_person
SET p.active = 0
WHERE f.id_prisoners = $id_pris";
$this->db->query($sql);

ВЕРСИЯ 4

$this->db->set('p.active', '0');
$this->db->where('f.id_prisoners', $id_pris);
$data_result = $this->db->update('tbl_family as f JOIN  tbl_person as p ON p.id_person = f.id_person');
return $data_result;
0 голосов
/ 11 апреля 2019

Попробуйте,

public function delete_all($id_pris){
   $this->db->set('p.active', '0');
   $this->db->where('f.id_prisoners', $id_pris);
   $data_result = $this->db->update('tbl_person p JOIN tbl_family f ON p.id_person = f.id_person');
   return  $data_result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...