Mysql Codeigniter批处理更新以前的记录状态

Mysql Codeigniter批处理更新以前的记录状态,mysql,codeigniter,Mysql,Codeigniter,我在Codeigniter框架中有MySQL数据库,用于管理商店中的项目。物料发放和验证状态保存在下表中 存储\更新\库存表 存储\更新\库存\详细信息表 这两个表由“更新库存id”连接。在执行项目请求时,订单状态bacame“issues”和transfer_状态在store_update_stock表中变为“Approved”,并将相关记录插入store_update_stock_details表 执行项目发布时,新记录被添加到与已批准记录相关的两个表中。订单状态变为“验证问题”,转移状态变

我在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']));