Mysql Codeigniter批处理更新以前的记录状态
我在Codeigniter框架中有MySQL数据库,用于管理商店中的项目。物料发放和验证状态保存在下表中 存储\更新\库存表 存储\更新\库存\详细信息表 这两个表由“更新库存id”连接。在执行项目请求时,订单状态bacame“issues”和transfer_状态在store_update_stock表中变为“Approved”,并将相关记录插入store_update_stock_details表 执行项目发布时,新记录被添加到与已批准记录相关的两个表中。订单状态变为“验证问题”,转移状态变为“验证” 我的控制器的相关部分如下:Mysql Codeigniter批处理更新以前的记录状态,mysql,codeigniter,Mysql,Codeigniter,我在Codeigniter框架中有MySQL数据库,用于管理商店中的项目。物料发放和验证状态保存在下表中 存储\更新\库存表 存储\更新\库存\详细信息表 这两个表由“更新库存id”连接。在执行项目请求时,订单状态bacame“issues”和transfer_状态在store_update_stock表中变为“Approved”,并将相关记录插入store_update_stock_details表 执行项目发布时,新记录被添加到与已批准记录相关的两个表中。订单状态变为“验证问题”,转移状态变
public function verifyItemReqFromHD()
{
$this->checkPermissions('edit', 'issueApprovedItem');
$bc = array(array('link' => '#', 'page' => 'Item Request From HD'));
$meta = array('page_title' => 'Item Request From HD', 'bc' => $bc);
$this->data['products'] = $this->Item_model->getProducts();
$this->form_validation->set_rules('item', 'Item', 'required');
if ($this->form_validation->run() == true) {
$count = count($this->input->post('item_id'));
$items = $this->input->post('item_id');
$qts = $this->input->post('qty');
$unit_price = $this->input->post('unit_price');
$usid = $this->input->post('update_stock_id');
$total = 0;
for ($x = 0; $x < $count; $x++) {
$details[$x]['update_stock_id'] = null;
$details[$x]['item'] = $items[$x];
$details[$x]['qty'] = (-1)*$qts[$x];
$details[$x]['is_qty'] = $qts[$x];
$details[$x]['unit_price'] = $unit_price[$x];
$details[$x]['status'] = 1;
}
$stock = array(
'office_id' => '',
'branch_id' => '',
'old_row_id' => $usid,
'supplier' => $this->session->userdata('id_user'),
'request_no' => '',
'auto_no' => '',
'purchased_date' => '',
'billed_date' => '',
'user' => ucfirst($this->session->userdata('name')),
'order_status' => 'verifyIssue',
'transfer_status' => 'Verified',
'status' => '1'
);
//dd($stock);
if ($this->Item_model->addItemReqFromHD($stock, $details)) {
$this->session->set_flashdata('message', 'Successfully Issued..!!');
redirect('item/approvedItemsToIssue');
}
} else {
$this->session->set_flashdata('error', validation_errors());
$this->render('item/viewItemtoIssued', $meta, $this->data);
}
}
function addItemReqFromHD($data,$details)
{
$this->db->trans_start();
if ($this->db->insert('store_update_stock', $data)) {
$id = $this->db->insert_id();
foreach ($details as $detail) {
$detail['update_stock_id'] = $id;
$this->db->insert('store_update_stock_details', $detail);
}
}
$this->db->update('store_update_stock', array('transfer_status' => 'Verified'), array($id => $data['update_stock_id']));
$this->db->trans_complete();
if ($this->db->trans_status() === true) {
return true;
}
return false;
}
期望输出
执行问题时,我希望在相关的以前记录中将订单状态更新为“verifyIssue”&将订单状态更新为“verifyIssue”。在此示例中,输出可能如下所示:
+-----------------+------------+----------+--------------+-----------------+------------+
| update_stock_id | old_row_id | supplier | order_status | transfer_status | user |
+-----------------+------------+----------+--------------+-----------------+------------+
| 561 | 0 | 3 | verifyIssue | Verified | Spsstrope1 |
| 563 | 0 | 3 | verifyIssue | Verified | Spsstrope1 |
| 566 | 0 | 3 | verifyIssue | Verified | Spsstrope1 |
| 568 | 0 | 3 | verifyIssue | Verified | Spsstrope1 |
| . | | | | | |
| . | | | | | |
| . | | | | | |
| 581 | 563 | 3 | verifyIssue | Verified | Spsstrope1 |
| 582 | 561 | 3 | verifyIssue | Verified | Spsstrope1 |
| 583 | 568 | 3 | verifyIssue | Verified | Spsstrope1 |
| 584 | 566 | 3 | verifyIssue | Verified | Spsstrope1 |
+-----------------+------------+----------+--------------+-----------------+------------+
在我的模型中,我使用了下面这行代码
$this->db->update('store_update_stock', array('transfer_status' => 'Verified'), array($id => $data['update_stock_id']));
但是没有得到想要的输出。有人能帮忙吗?在更新查询中,对
存储更新库存执行时,“更新库存id”是$data
数组中未定义的索引
当您回溯到传递$data
的位置时,您会发现这是控制器中声明的$stock数组
现在,在将项目插入到store\u update\u stock
表后,在每个$detail
数组中设置update\u stock\u id
这是代码中实现此功能的部分
foreach($details作为$detail){
$detail['update\u stock\u id']=$id;
$this->db->insert('store\u update\u stock\u details',$detail);
}
我建议将所有ID放入一个数组中,并在store\u update\u stock
表的update查询的where子句中使用该数组
函数addItemReqFromHD($data$details)
{
$updateStockIds=[];
$this->db->trans_start();
如果($this->db->insert($store\u update\u stock',$data)){
$id=$this->db->insert_id();
$updateStockIds[]=$id;
# ...
}
$this->db->where_in('update_stock_id',$updateStockIds);
$this->db->update(
“存储更新库存”,
数组('order_status'=>'verifyIssue','transfer_status'=>'Verified')
);
$this->db->trans_complete();
# ...
}
+-----------------+------------+----------+--------------+-----------------+------------+
| update_stock_id | old_row_id | supplier | order_status | transfer_status | user |
+-----------------+------------+----------+--------------+-----------------+------------+
| 561 | 0 | 3 | verifyIssue | Verified | Spsstrope1 |
| 563 | 0 | 3 | verifyIssue | Verified | Spsstrope1 |
| 566 | 0 | 3 | verifyIssue | Verified | Spsstrope1 |
| 568 | 0 | 3 | verifyIssue | Verified | Spsstrope1 |
| . | | | | | |
| . | | | | | |
| . | | | | | |
| 581 | 563 | 3 | verifyIssue | Verified | Spsstrope1 |
| 582 | 561 | 3 | verifyIssue | Verified | Spsstrope1 |
| 583 | 568 | 3 | verifyIssue | Verified | Spsstrope1 |
| 584 | 566 | 3 | verifyIssue | Verified | Spsstrope1 |
+-----------------+------------+----------+--------------+-----------------+------------+
$this->db->update('store_update_stock', array('transfer_status' => 'Verified'), array($id => $data['update_stock_id']));