2012-09-03 50 views
6

是否有可能有一个“交易”与分开的模型。 我想用他们的标签插入帖子。标签和帖子分为两个独立模型。 我怎样才能处理它与交易? (如下所示:)Codeigniter一个交易与两个模型

$this->db->trans_start(); 
$this->post_model->insert('...'); 
$this->tags_model->insert('...'); 
$this->db->trans_complete(); 
+0

你的代码在哪里? – amd

回答

5

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

按文档,你可以通过TRUE$this->db->trans_start()测试:

$this->db->trans_start(TRUE); 
// Queries/model calls 
$this->db->trans_complete(); 

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

传递TRUEtrans_start()将自动回滚完成后交易。您应该能够检查表上的auto_increment值(如果适用)以查看事务是否有效。

+0

我猜在这种情况下会有一个控制器,对吧?这段代码将被放置在控制器内? – Lykos

+0

@Lykos它不一定是。这也可能出现在你的模型方法中(也就是说,它应该是现实的)。如果您直接在控制器中使用数据库,则是将其放置在控制器中的数据库代码附近。 – Brendan

+0

Personaly我总是把我的模型放在我的模型中,但是正如Tschempe在上面问的那样,可以做 $ this-> db-> trans_start(); $ this-> post_model-> insert('...'); $ this-> tags_model-> insert('...'); 控制器内部,为了一次插入数据到不同的数据库表? – Lykos