leanghy
leanghy

Reputation: 50

Insert multiple table and row in codeigniter

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

Answers (1)

Punit Gajjar
Punit Gajjar

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

Related Questions