codeigniter从模型中获取最后一个插入ID以用作重定向参数

时间:2013-06-17 03:36:55

标签: codeigniter

我需要获取在我的控制器中使用的插入ID,问题是我的模型函数有几个数据数组,我需要第一个数组的插入ID。因此,如果我试图在我的控制器上获取插入ID,显然它抓住第二个插入ID而不是第一个。

我不确定这是否有意义,但这是一个例子:

模型

public function add() { 

    $data = array(
        'name' => $_POST['companyName']
        ,'type' => $_POST['companyType']
        ,'active' => '1');

    $this->db->insert('company', $data);

    $cid = $this->db->insert_id();

    $data2 = array(
        'cid' => $cid
        ,'name' => $_POST['locationName']
        ,'address' => $_POST['locationAddress']);

    $this->db->insert('locations', $data2);
}

这工作正常......但是在运行之后,在我的控制器上重定向正在获取data2最后一次插入,这使我的重定向错误。

控制器

public function add() {

    if (isset($_POST["add"]))
    {
        $this->Company_model->add();
        $id = $this->db->insert_id();
        redirect('company/view/'.$cid);
    }

    $data['states']  = $this->Company_model->

}

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:3)

你非常接近。您可以从模型方法返回$ cid,而不是在控制器中重复$id = $this->db->insert_id();

模型

public function add()   { 
    $data = array(
        'name' => $_POST['companyName']
        ,'type' => $_POST['companyType']
        ,'active' => '1');
    $this->db->insert('company', $data);

    $cid = $this->db->insert_id();
    $data2 = array(
                   'cid' => $cid
                   ,'name' => $_POST['locationName']
                   ,'address' => $_POST['locationAddress']);
    $this->db->insert('locations', $data2);

    // This returns your first inserts id
    return $cid;
}

控制器

public function add() {

    if (isset($_POST["add"]))
    {
        $id = $this->Company_model->add();
        redirect('company/view/'.$id);
    }
    ...