[英]Insert batch codeigniter
这是我在mysql上的表
| DETAIL_ID | REPAIR_ESTIMATE_ID | ITEM | DAMAGE_ID | REPAIR_ID | REMARKS | MANHOUR |
-----------------------------------------------------------------------------------------------
| | | | | | | |
| | | | | | | |
我有一个数组来自html的视图,由jQuery ajax处理。 :
Array
(
[0] => Array
(
[TYPE] => Cleaning
[ITEM] => Certificate
[DAMAGE] => Broken
[REPAIR] => Blast&Paint
[REMARKS] =>
[MANHOUR] =>
)
[1] => Array
(
[TYPE] => Frame
[ITEM] => Certificate
[DAMAGE] => Broken
[REPAIR] => Blast&Paint
[REMARKS] =>
[MANHOUR] =>
)
)
我有2个问题:
如何将这个数组与insert_batch()
? 我阅读了文档,其值定义如下:
$data = array(
array(
'title' => 'My title',
'name' => 'My Name',
'date' => 'My date'
),
array(
'title' => 'Another title',
'name' => 'Another Name',
'date' => 'Another date'
)
);
$this->db->insert_batch('mytable', $data);
其次,根据我的表, repair_estimate_id
是外键。 我如何操纵数组以具有如下新值:
Array
(
[0] => Array
(
[REPAIR_ESTIMATED_ID] => 'SOme value'
[TYPE] => Cleaning
[ITEM] => Certificate
[DAMAGE] => Broken
[REPAIR] => Blast&Paint
[REMARKS] =>
[MANHOUR] =>
)
[1] => Array
(
[REPAIR_ESTIMATED_ID] => 'SOme value'
[TYPE] => Frame
[ITEM] => Certificate
[DAMAGE] => Broken
[REPAIR] => Blast&Paint
[REMARKS] =>
[MANHOUR] =>
)
)
更新我使用ajax获取此数组:
var myArrays =[];
$(document).on('submit', '#upload', function () {
var tr = $('#tableReport tr:last');
var type = tr.find("#type").val();
var item = tr.find("#item").val();
var damage = tr.find("#damage").val();
var repair = tr.find("#repair").val();
var remarks = tr.find("#remarks").val();
var manhour = tr.find("#manhour").val();
myArrays.push({"TYPE": type, "ITEM": item, "DAMAGE": damage, "REPAIR": repair, "REMARKS": remarks, "MANHOUR": manhour});
$.ajax({
url: "<?php echo base_url('surveyor/c_surveyor/add_detail'); ?>",
type: "POST",
data: {
myArrays: myArrays,
},
dataType: 'json',
success: function (obj) {
console.log(obj);
}
});
return false;
});
这是PHP代码
public function add_detail() {
$insertData= array();
if(is_array($this->input->post('myArrays'))){
foreach ($this->input->post('myArrays') as $key => $value) {
$temp = $value;
$temp['REPAIR_ESTIMATE_ID'] = $cek_master->row()->REPAIR_ESTIMATE_ID;
$insertData =$temp;
}
}
我使用Firebug调试了它:
echo "<pre>";
print_r($this->input->post('myArrays'));
echo "<pre>";
print_r($insertData);
结果是:
Array
(
[0] => Array
(
[TYPE] => 01
[ITEM] => 01
[DAMAGE] => 01
[REPAIR] => 30
[REMARKS] =>
[MANHOUR] =>
)
[1] => Array
(
[TYPE] => 10
[ITEM] => 02
[DAMAGE] => 18
[REPAIR] => 45
[REMARKS] => Test
[MANHOUR] => 12:00
)
)
Array
(
[TYPE] => 10
[ITEM] => 02
[DAMAGE] => 18
[REPAIR] => 45
[REMARKS] => Test
[MANHOUR] => 12:00
[REPAIR_ESTIMATE_ID] => 7
)
你可以这样做:
$insertData = array();
if(is_array($input))
{
foreach($input as $key => $value)
{
$temp = $value;
$temp['REPAIR_ESTIMATED_ID'] = 'some Value';
//***************Please remove below line
//$insertData[] = $temp;
//Please add this new line.
array_push($insertData, $temp);
}
$this->db->insert_batch('mytable', $insertData);
}
$insertData = array();
if(is_array($input))
{
foreach($input as $data)
{
$data['REPAIR_ESTIMATED_ID'] = 'some Value';
$insertData[] = $data;
}
$this->db->insert_batch('mytable', $insertData);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.