在CodeIgniter中,
是否可以创建事务(尚未提交)并获取 ID ,并且如果语句为<,则使 if语句 strong> true ,那么它将提交?
不同的功能可以获得相同的交易吗?
例如:
$newID = $this->model->create();
if(!empty($newID)) {
$this->model->commit();
}else{
// cancel commit;
}
答案 0 :(得分:1)
您可以尝试的是手动运行交易。
可以按照:
$this->db->trans_begin();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
}
else
{
$this->db->trans_commit();
}
阅读 docs 了解详情。
答案 1 :(得分:0)
Josua你可以在你的模型中做这些事情,而不是从控制器中调用模型。
表格结构
<强>控制器强>
function index(){
$this->load->model('mtest');
$this->mtest->do_your_transaction();
}
模型 mtest.php
class mtest extends CI_Model
{
function do_your_transaction()
{
$this->db->trans_start();
$id = $this->insert_query();
$this->update_query_using($id);
$this->db->trans_complete();
if($this->db->trans_status() === FALSE ) {
// do something falsy
}
else { /* do something if true. */ }
}
function insert_query()
{
$this->db->insert('tbl', array('name1' => "hoho", 'name2' => "yohoho", "count"=>0));
return $this->db->insert_id(); /* return last inserted. */
}
function update_query_using($id)
{
$this->db->where('id', $id)->update('tbl', array("count" => 100));
}
} // end of mtest class
如果你尝试执行两次,它只会插入第一个插入并更新。