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