使用join codeigniter一次从两个mysql表中删除

使用join codeigniter一次从两个mysql表中删除,mysql,codeigniter,Mysql,Codeigniter,我试图使用这个函数一次从两个mysql表中删除 public function deleteBusiness($id) { $this->db->from("business"); $this->db->join("opening_hours", "business"); $this->db->where("business", $id); retu

我试图使用这个函数一次从两个mysql表中删除

public function deleteBusiness($id)
        {
            $this->db->from("business");
            $this->db->join("opening_hours", "business");
            $this->db->where("business", $id);
            return $this->db->delete(array("business","opening_hours"));
        }
它似乎工作正常,因为正确的数据正在从两个表中删除,但当我用以下命令调用它时

if($this->businesses_model->deleteBusiness($id)){
                    $this->session->set_flashdata('flash_message', 'Business Deleted');
                } else {
                    $this->session->set_flashdata('flash_message', 'There was a problem deleting that business');
                }

将显示失败的错误消息

用下面的代码替换上面的代码,如果不起作用,请告诉我

public function deleteBusiness($id)
 {
            $this->db->from("business");
            $this->db->join("opening_hours", "business");
            $this->db->where("business", $id);
            $this->db->delete(array("business","opening_hours"));
            return $this->db->affected_rows();
 }


if($this->businesses_model->deleteBusiness($id) > 0){
        $this->session->set_flashdata('flash_message', 'Business Deleted');
   } else {
        $this->session->set_flashdata('flash_message', 'There was a problem deleting that business');
   }

如果它不起作用,请告诉我

您似乎正在尝试从
业务
表中删除一行以及
营业时间
中与该业务相关的所有行

public function deleteBusiness($id)
 {
            $this->db->from("business");
            $this->db->join("opening_hours", "business");
            $this->db->where("business", $id);
            $this->db->delete(array("business","opening_hours"));
            return $this->db->affected_rows();
 }


if($this->businesses_model->deleteBusiness($id) > 0){
        $this->session->set_flashdata('flash_message', 'Business Deleted');
   } else {
        $this->session->set_flashdata('flash_message', 'There was a problem deleting that business');
   }
不幸的是,在执行活动记录删除时,
CodeIgniter
忽略连接,因此您的代码无法工作

他们的文档确实指出,您可以将一个数组传递给delete方法,它将从多行中删除

$tables = array('table1', 'table2', 'table3');
$this->db->where('id', '5');
$this->db->delete($tables);
但是,请注意,它将删除
id
=5的3个表中的行。同样,在您的情况下,它将从id为2的营业时间和营业时间中删除。显然这不是你想要的

唯一的选择是使用下面的两个查询或使用原始SQL查询

            $this->db->from("business");
            $this->db->where("id", $id);
            $this->db->delete('business');

            $this->db->from("opening_hours");
            $this->db->where("business_id", $id);                       
            $this->db->delete('opening_hours');

$this->db->error()
(假设CodeIgniter 3.0+)返回的是什么?我在表之间使用了外键约束。我不知道为什么我不早点试试!!嗨,谢谢你的建议。我还没有试过,但是行返回$this->db->impacted_rows();看起来这可能是我缺少的。我在表之间使用了外键约束。我不知道为什么我不早点试试!!我在表之间使用了外键约束。我不知道为什么我不早点试试!!即使您希望使用外键删除约束,您也必须在代码中进行更改以仅删除业务表。您好,如果我删除了业务,我还希望删除表中的任何相应条目。我不希望在业务被删除后休假开放时间出现错误。外键约束似乎有效。