将数据插入两个表中,一个依赖于另一个表

时间:2015-05-09 10:58:25

标签: codeigniter sql-insert

例如我在数据库中有这样的结构:

表1: [ID] [内容]

表2: [ID] [table1_id]

我希望在这两个表中同时插入一些数据,但问题是[table1_id]是table1的主键。我该如何插入?

2 个答案:

答案 0 :(得分:0)

为了将表1的主键插入表2,代码点火器内置了辅助函数来帮助完成此任务。

//prepare data for table 1    
$data = array(
   'conent' => 'My content',
);
//insert into table 1
$this->db->insert('table1',$data);

//prepare data for table 2
$data = array(
   'table1_id' => $this->db->insert_id(),
);
//insert into table 2
$this->db->insert('table2',$data);

答案 1 :(得分:0)

正如您在table2中引用table1_id所以您必须先插入table1字段。然后你可以插入table2。 您可以在控制器中执行以下操作

public function insert(){
   $data['table1_data']=$this->ur_model->insert_table1();
   $latest_id=$this->ur_model->get_latest_id();
   $data['table1_data']=$this->ur_model->insert_table2($latest_id);
}

在您的模型中

function insert_table1(){
    $data=array(
                'content'=>$this->input->post('content')
          );
    $this->db->insert('table1',$data);
    //better return true on success
}

public function get_latest_id(){
    $sql=$this->db->query("SELECT MAX(id) as id FROM table1");
    return $sql->row_array();
} 

function insert_table2($table1_id){
    $data=array(
               'content'=>$this->input->post('content'),
               'table1_id'=>$table1_id['id']
          );
    $this->db->insert('table2',$data);
}

这样您将始终将最新的id插入table1_id。

相关问题