是否有可能有一個「交易」與分開的模型。 我想用他們的標籤插入帖子。標籤和帖子分爲兩個獨立模型。 我怎樣才能處理它與交易? (如下所示:)Codeigniter一個交易與兩個模型
$this->db->trans_start();
$this->post_model->insert('...');
$this->tags_model->insert('...');
$this->db->trans_complete();
是否有可能有一個「交易」與分開的模型。 我想用他們的標籤插入帖子。標籤和帖子分爲兩個獨立模型。 我怎樣才能處理它與交易? (如下所示:)Codeigniter一個交易與兩個模型
$this->db->trans_start();
$this->post_model->insert('...');
$this->tags_model->insert('...');
$this->db->trans_complete();
只要您的模型方法中沒有其他事務語句,您的示例代碼應該可以正常工作。
按文檔,你可以通過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
}
傳遞TRUE
到trans_start()
將自動回滾完成後交易。您應該能夠檢查表上的auto_increment值(如果適用)以查看事務是否有效。
我猜在這種情況下會有一個控制器,對吧?這段代碼將被放置在控制器內? – Lykos
@Lykos它不一定是。這也可能出現在你的模型方法中(也就是說,它應該是現實的)。如果您直接在控制器中使用數據庫,則是將其放置在控制器中的數據庫代碼附近。 – Brendan
Personaly我總是把我的模型放在我的模型中,但是正如Tschempe在上面問的那樣,可以做 $ this-> db-> trans_start(); $ this-> post_model-> insert('...'); $ this-> tags_model-> insert('...'); 控制器內部,爲了一次插入數據到不同的數據庫表? – Lykos
你的代碼在哪裏? – amd