是否Codeigniter 2有一个更清晰的方法来做下面代码中显示的事情?
正如你所看到的,我试图通过POST将数据插入到3个彼此相关的独立表中。
一旦我插入到table1
,我想要获取它的last insert id
并将其作为table2_id
和table3_id
(外键)的值输入。
我在谷歌上搜索了这个和这个,人们提到了数据库事务,但我想知道是否有一种没有事务的方法。
只是好奇,作为一个CodeIgniter新手。
代码如下:
public function create()
{
$this->load->model('table1');
$this->load->model('table2');
$this->load->model('table3');
//validation goes here
$id1 = $this->table1->insert($this->input->post('table1'));
$data2 = array_merge($this->input->post('table2'), array('table1_id' => $id1));
$id2 = $this->table2->insert($data2);
$data3 = array_merge($this->input->post('table3'), array('table1_id' => $id1));
$id3 = $this->table3->insert($data3);
}
您有以下功能:
$this->db->insert_id();
,它可以在插入之后使用,并提供插入数据的id。您总是可以添加if else语句来检查是否正确插入了数据,并继续执行其余的插入。