簡體   English   中英

codeigniter:將數據/記錄插入2個表

[英]codeigniter : inserting data/record into 2 tables

我有2個表“ pengguna”和“ mahasiswa”,然后有1個表,即將1個表插入2個表中,到目前為止,我設法插入數據,但是當它與“主鍵”和“外鍵”有關時它有問題,如u可以從下面的代碼看到id_pengguna從表pengguna主鍵id_pengguna從表mahasiswa外鍵的問題是當我在插入數據, id_penggunapengguna有它的值,而在表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。

這可以通過兩種方式完成:

  1. 使用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 
  2. 在第一張表中插入數據后,獲取具有相同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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM