CodeIgniter:如何将 $this->db->insert_id() 值传递给控制器以便插入另一个表?
Posted
技术标签:
【中文标题】CodeIgniter:如何将 $this->db->insert_id() 值传递给控制器以便插入另一个表?【英文标题】:CodeIgniter: How to pass $this->db->insert_id() value to Controller in order to be inserted in another table? 【发布时间】:2013-07-08 14:54:41 【问题描述】:我正在尝试向表中插入字段并获取 id(假设表的 PRIMARY KEY 是 AUTO INCREMENT)。我需要将该记录的自动增量 ID 插入到第二个表中。我显然可以返回 $this->db->insert_id() 但之后如何访问 Controller 中的值?
我试图在变量中定义它并在控制器中访问,但它不起作用。
A php Error was encountered
Severity: Notice
Message: Undefined variable: insert_id
Filename: controllers/POS.php
Line Number: 87
型号:
function populate_pos_purchase_table($posPurchase)
$this->db->trans_begin();
$this->db->insert('pos_purchase', $posPurchase);
if ($this->db->trans_status() === FALSE)
$this->db->trans_rollback();
return false;
else
$this->db->trans_commit();
$insert_id = $this->db->insert_id();
return $insert_id;
return true;
控制器:
function update_payment_details()
$newPayment = array (
'pos_id' => $insert_id, // Line Number: 87
'payment_description' => 'Point of Sales',
'payment_method' => $this->input->post('payment_method'),
'payment_date' => $this->input->post('payment_date'),
'paid_amount' => $this->input->post('total'),
'due_amount' => 0
);
$this->pos_model->populate_new_payment_table($newPayment);
$this->index();
【问题讨论】:
在你的模型中,一个函数不能像这样连续返回两次。请参阅文档php.net/manual/en/function.return.php。 “如果从函数内部调用,return 语句会立即结束当前函数的执行,并将其参数作为函数调用的值返回。return 还将结束 eval() 语句或脚本文件的执行。”跨度> @envysea 谢谢。我没有意识到这一点。 【参考方案1】:只需保存第一个插入的 id - 然后在第二个插入中使用它?
function update_payment_details()
$insert_id = populate_pos_purchase_table($posPurchase);
$newPayment = array (
'pos_id' => $insert_id, // Line Number: 87
'payment_description' => 'Point of Sales',
'payment_method' => $this->input->post('payment_method'),
'payment_date' => $this->input->post('payment_date'),
'paid_amount' => $this->input->post('total'),
'due_amount' => 0
);
$this->pos_model->populate_new_payment_table($newPayment);
$this->index();
【讨论】:
是的! $insert_id = $this->pos_model->populate_pos_purchase_table($posPurchase);在控制器工作。谢谢。以上是关于CodeIgniter:如何将 $this->db->insert_id() 值传递给控制器以便插入另一个表?的主要内容,如果未能解决你的问题,请参考以下文章