Reputation: 50
I trying insert data into multiple table and multiple row in single form, I have two table pms_service_fee and pms_service_fee_detail, At this point when user submit the form the data will go to both tables.
My Model
function add_pms($data)
{
$data = escape_array($data);
$pms_data = [
'unit_id' => $data['unit_id'],
];
if(isset($data['edit_pms_id'])) {
$this->db->set($pms_data)->where('id', $data['edit_pms_id'])->update('pms_service_fee');
} else {
$this->db->insert('pms_service_fee', $pms_data);
}
$pms_id = $this->db->insert_id();
// I have this array, But is not a good idea because I want that array in loop. But I don't know how.
$pms_service_fee_detail = [
[
'pms_id' => $pms_id,
'pms_service_fee_id' => $data['pms_service_fee_id'][0],
'pms_service_fee_price' => $data['pms_service_fee_price'][0],
],
[
'pms_id' => $pms_id,
'pms_service_fee_id' => $data['pms_service_fee_id'][1],
'pms_service_fee_price' => $data['pms_service_fee_price'][1],
],
];
$this->db->insert_batch('pms_service_fee_detail', $pms_service_fee_detail);
}
Upvotes: 1
Views: 69
Reputation: 4997
You can use the loop to push the array into the array something like below.
$data = escape_array($data);
$pms_data = [
'unit_id' => $data['unit_id'],
];
if(isset($data['edit_pms_id'])) {
$this->db->set($pms_data)->where('id', $data['edit_pms_id'])->update('pms_service_fee');
} else {
$this->db->insert('pms_service_fee', $pms_data);
}
$pms_id = $this->db->insert_id();
$pms_service_fee_detail = [];
/ * Your Loop Here to Push the values to the array */
foreach($yourArray as $key => $value) {
$pms_service_fee_detail[] = [
'pms_id' => $pms_id,
'pms_service_fee_id' => $yourArray[$key]['pms_service_fee_id'],
'pms_service_fee_price' => $yourArray[$key]['pms_service_fee_price'],
];
}
$this->db->insert_batch('pms_service_fee_detail', $pms_service_fee_detail);
Upvotes: 1