2012-09-03 49 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