update_batch并插入codeigniter

时间:2019-03-08 14:19:59

标签: sql codeigniter

我有两个桌子。第一个是customer,第二个是customer_tel。 每个客户可以有一个或多个tel_number,因此我将客户的号码存储在customer_tel中。我的问题是关于更新customer_tel。我不知道客户可以拥有多少个tel_numbers。因此,如果客户已经有一个tel_number,现在想要对其进行编辑或添加新的tel_number,该如何使用update并将它们一起插入? 例如客户表是:

id = 1 , fullname : john doe

而customer_tel是:

id = 1 , customer_id = 1 , tel_number = 123456789
id = 2 , customer_id = 1 , tel_number = 123456

每个用户可以编辑或添加他们的tel_number。我对update_batch很熟悉,但是在这里它无法工作,因为我也同时插入了。 我的解决方案是删除具有customer_id = 1的行,并insert_batch新数据。有什么办法比这更好的吗?

        for($i = 0 ; $i < sizeof($_POST['tel_title']) ; $i++){
        $tel[] = array(
         'customer_id'=> $id,
         'tel_title'=> htmlspecialchars($_POST['tel_title'][$i]),
         'tel' => htmlspecialchars($_POST['tel'][$i])
        );
    }
    $this->base_model->delete_data('customer_tel' , array('customer_id'=> $id));
    $res = $this->base_model->insert_batch('customer_tel' , $tel);

1 个答案:

答案 0 :(得分:0)

尝试

$this->db->delete('customer_tel' , array('customer_id'=> $id));
$res = $this->db->insert_batch('customer_tel' , $tel);

代替

$this->base_model->delete_data('customer_tel' , array('customer_id'=> $id));
$res = $this->base_model->insert_batch('customer_tel' , $tel);