在完成临时(costing_detail_temp
)表中的数据处理后,
我必须将该数据插入到永久(costing_detail
)表中带有一些额外列值的行中。costing_detail
表具有与costing_detail_temp
相同的列以及一些附加列。所以,我必须做以下事情:
- 对costing_detail_temp运行查询并选择一行
- 在返回的数组中添加一些键值对
-
插入成本核算明细。所以,这是我的模型的代码:
函数add_new_detail($Temp_id){$loggedUserID=$this->session->userdata('id_user');$added_on=日期('Y-m-d H:i:s');$added_date=日期('Y-m-d');$ip=$this->input->ip_address();$qry="SELECT*FROM costing_detail_temp WHERE temp_id="$Temp_id;$query=$this->db->query($qry);$data_item_list=$query->result();$additional_data=数组('added_by'=>$loggedUserID,'added_on'=>$added_on,'added_date'=>$added_date,'operation_ip'=>$ip);//在$data_item_list中推送数组$additional_dataarray_push($data_item_list,$additional_data)//**********//插入具有组合数组的行$this->db->insert('scong_detail',$data_item_list);返回$data_item_list;}
这将返回以下数组:
大堆([0]=>stdClass对象([Temp_id]=>20160300101【Quotation_id】=>201603001[项目名称]=>BYA:3 x 3 re(3-w)红色[item_id]=>0[项目规范]=>芯=3,电线=3,绝缘=聚氯乙烯,直径=3mm,颜色=红色【需求数量】=>3.00)[1] =>阵列([added_by]=>12〔added_on〕=>2016-04-04 12:15:47[添加日期]=>2016年4月4日[operation_ip]=>127.0.0.1))
然而,我需要这样的东西:
大堆([0]=>stdClass对象([Temp_id]=>20160300101【Quotation_id】=>201603001[项目名称]=>BYA:3 x 3 re(3-w)红色[item_id]=>0[项目规范]=>芯=3,电线=3,绝缘=聚氯乙烯,直径=3mm,颜色=红色【需求数量】=>3.00[added_by]=>12〔added_on〕=>2016-04-04 12:15:47[添加日期]=>2016年4月4日[operation_ip]=>127.0.0.1))
我怎样才能做到这一点?
尝试使用foreach
来获得想要获得的结果,并将其插入数组中,如下例所示:
function add_new_detail($Temp_id)
{
$loggedUserID = $this->session->userdata('id_user');
$added_on = date('Y-m-d H:i:s');
$added_date = date('Y-m-d');
$ip = $this->input->ip_address();
$qry = "SELECT * FROM costing_detail_temp WHERE Temp_id = ".$Temp_id;
$query = $this->db->query($qry);
$data_itemlist = array();
foreach ($query->result() as $dat) {
foreach ($dat as $key => $value) {
$data_itemlist[$key] = $value;
}
$data_itemlist['added_by'] = $loggedUserID;
$data_itemlist['added_on'] = $added_on;
$data_itemlist['added_date'] = $added_date;
$data_itemlist['operation_ip'] = $ip;
}
$this->db->insert('costing_detail', $data_itemlist);
return $data_itemlist;
}
输出
Array(
[Temp_id] => 20160300101
[Quotation_id] => 201603001
[item_name] => BYA :3x 3 re (3-w) Red
[item_id] => 0
[Item_Specification] => core=3, wire=3, insulation=pvc, dia=3mm, color=red
[Required_Quantity] => 3.00
[added_by] => 12
[added_on] => 2016-04-04 12:15:47
[added_date] => 2016-04-04
[operation_ip] => 127.0.0.1
)
试试这个代码。
function add_new_detail($Temp_id)
{
$loggedUserID = $this->session->userdata('id_user');
$added_on = date('Y-m-d H:i:s');
$added_date = date('Y-m-d');
$ip = $this->input->ip_address();
$qry = "SELECT * FROM costing_detail_temp WHERE Temp_id = ".$Temp_id;
$query = $this->db->query($qry);
$data_item_list = $query->result_array(); // result as an array
// add additional data
foreach ($data_item_list as $key => $item)
{
$data_item_list[$key]['added_by'] = $loggedUserID;
$data_item_list[$key]['added_on'] = $added_on;
$data_item_list[$key]['added_date'] = $added_date;
$data_item_list[$key]['operation_ip'] = $operation_ip;
}
//insert a row with the combined array
$this->db->insert('costing_detail', $data_item_list);
return $data_item_list;
}