Codeigniter一个事务和两个模型

Codeigniter一个事务和两个模型,codeigniter,model,transactions,Codeigniter,Model,Transactions,是否可以将一个“事务”用于不同的模型。 我想插入带有标签的帖子。标签和贴子位于两个独立的模型中。 我怎样才能通过交易来处理它?(如下图所示:) 只要您的模型方法中没有其他事务语句,您的示例代码就可以正常工作 根据文档,您可以通过将TRUE传递到$this->db->trans\u start()来测试它: 将TRUE传递到trans\u start()将在事务完成时自动回滚事务。您应该能够检查表上的自动增量值(如果适用),以查看事务是否有效。代码中的问题在哪里?我想在这种情况下,会有一个控制器,

是否可以将一个“事务”用于不同的模型。 我想插入带有标签的帖子。标签和贴子位于两个独立的模型中。 我怎样才能通过交易来处理它?(如下图所示:)


只要您的模型方法中没有其他事务语句,您的示例代码就可以正常工作

根据文档,您可以通过将
TRUE
传递到
$this->db->trans\u start()
来测试它:


TRUE
传递到
trans\u start()
将在事务完成时自动回滚事务。您应该能够检查表上的自动增量值(如果适用),以查看事务是否有效。

代码中的问题在哪里?我想在这种情况下,会有一个控制器,对吗?此代码将被放置在控制器内???@Lykos,不必如此。这也可能出现在您的模型方法中(实际上,这就是它应该出现的地方)。如果您直接在控制器中使用DB,那么是的,它被放置在控制器中,围绕您的DB代码。个人而言,我总是将我的crud放在我的模型中,但是正如Tschempe上面所问的,可以执行$this->DB->trans_start()吗$这->发布模型->插入(“…”)$这个->标签\模型->插入('…');在控制器内部,为了同时将数据插入不同的db表?@Lykos是的。只要确保您的模型方法不执行任何事务函数,您就会没事了。
$this->db->trans_start();
$this->post_model->insert('...');
$this->tags_model->insert('...');
$this->db->trans_complete();
$this->db->trans_start(TRUE);
// Queries/model calls
$this->db->trans_complete();

if($this->db->trans_status() === FALSE)
{
    // do something if it fails
}