我不确定如何使用活动记录或手动sql处理此问题.我想要做的是将记录添加到具有自动递增ID的“联系人”表中,然后将记录添加到具有相应“联系人”记录ID的ID的“订单”表中.
我知道我可以使用$this-> db-> insert_id()获得插入的联系人记录的ID,但这仅在使用活动记录时有效吗?
另外,我可以在一个查询中实现这种插入,还是必须将其拆分为两个?
解决方法:
$this-> db不引用Active Record.您必须选择使用Active Record,$this-> db仅指数据库抽象层.
就是说,您可以在查询(无论是否为Active Record)之后立即使用$this-> db-> insert_id()来获取其插入ID.
但是要处理一次插入依赖于彼此ID的多个记录,我将切换为InnoDB作为您的表类型(如果还没有的话),并使用CodeIgniter的transactions.
这是一个示例,改编自CodeIgniter的文档:
$this->db->trans_start();
$this->db->query('INSERT INTO table1 VALUES(id,field1,field2)');
$table1_id = $this->db->insert_id();
$this->db->query('INSERT INTO table2 VALUES(id,' . $table1_id . ',field2,field3)');
$this->db->trans_complete();