![](/img/trans.png)
[英]codeigniter : inserting data/record into 2 tables with the same id
[英]codeigniter : inserting data/record into 2 tables
我有2個表“ pengguna”和“ mahasiswa”,然后有1個表,即將1個表插入2個表中,到目前為止,我設法插入數據,但是當它與“主鍵”和“外鍵”有關時它有問題,如u可以從下面的代碼看到id_pengguna
從表pengguna
是主鍵和id_pengguna
從表mahasiswa
為外鍵的問題是當我在插入數據, id_pengguna
從pengguna
有它的值,而在表mahasiswa
它沒有值,下面是我的代碼,是否有任何簡單的方法,或者我做錯了什么?
調節器
public function insertMahasiswa(){
$username = $this->input->post('username');
$password = md5($this->input->post('password'));
$data1 = array(
'username'=>$username,
'password'=>$password,
'level'=>3,
);
$nim = $this->input->post('nim');
$nama = $this->input->post('nama');
$email = $this->input->post('email');
$telepon = $this->input->post('telepon');
$data = array(
'nim'=>$nim,
'nama_mahasiswa'=>$nama,
'email'=>$email,
'telepon'=>$telepon,
);
$insert = $this->MMahasiswa->create('pengguna',$data1);
$insert1 = $this->MMahasiswa->create('mahasiswa',$data);
redirect(site_url('mahasiswa/data?balasan=1'));
}
模型
function create($table,$data){
$query = $this->db->insert($table, $data);
return $query;
}
您需要從模型文件返回最后的插入ID
在模型中
function create($table,$data){
$query = $this->db->insert($table, $data);
return $this->db->insert_id();// return last insert id
}
在控制器中
$id_pengguna = $this->MMahasiswa->create('pengguna',$data1);
$data = array(
'nim'=>$nim,
'nama_mahasiswa'=>$nama,
'email'=>$email,
'telepon'=>$telepon,
'id_pengguna'=>$id_pengguna// add last insert id to mahasiswa table
);
$insert1 = $this->MMahasiswa->create('mahasiswa',$data);
在將數據插入第二個表(即mahasiswa
您需要獲取在表1( pengguna
)中插入數據后創建的主ID。
這可以通過兩種方式完成:
使用codeigniter的insert_id()
函數insert_id()
最后一個插入ID。
function create($table,$data) { $query = $this->db->insert($table, $data); return $this->db->insert_id(); } // return last insert id
在第一張表中插入數據后,獲取具有相同username
的行的ID。 (為此,您必須在“ username
列中具有唯一的用戶username
)。這將返回相應的ID。
注意:您也可以使用“電子郵件”列執行此操作。
來源/參考:詳細說明- 通過1個表單在2個表中插入數據-CodeIgniter
您可以執行此操作(只有少量更改)
Controller.php這樣
public function insertMahasiswa(){
$username = $this->input->post('username');
$password = md5($this->input->post('password'));
$data1 = array(
'username'=>$username,
'password'=>$password,
'level'=>3,
);
$nim = $this->input->post('nim');
$nama = $this->input->post('nama');
$email = $this->input->post('email');
$telepon = $this->input->post('telepon');
$data = array(
'nim'=>$nim,
'nama_mahasiswa'=>$nama,
'email'=>$email,
'telepon'=>$telepon,
);
$insert = $this->MMahasiswa->create('pengguna',$data1);
$insert1 = $this->MMahasiswa->create('mahasiswa',$data);
$insert = $this->MMahasiswa->create('pengguna',$data1,'mahasiswa',$data);
redirect(site_url('mahasiswa/data?balasan=1'));
}
model.php
function create($table1, $data1, $table2, $data2){
$this->db->insert($table1, $data1);
$id_table1 = $this->db->insert_id();
array_unshift($data2, array('id_pengguna'=>$id_table1));
$this->db->insert($table2, $data2);
$id_table2 = $this->db->insert_id();
$return_data = array($table1 => $id_table1, $table2 => $id_table2);
return $returndata;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.