raptorandy
raptorandy

Reputation: 225

Array with single value to string conversion in codeIgniter

In the controller I send an array to parameters to the model to be inserted in a table. Before to send those values 2 queries need to be performed. Both queries return a single number which is the ID for a foreign key.

This is the code in my controller

//Here are the two queries, as I understand the queries return an array with a single value for the ID
//Then I try to save that first value of the array in a different variable.

$idEmployee1 = $this->Pogeneralmodel->get_idEmployee($this->input->post('employee1'));
$employee1 = array_values($idEmployee1)[0]; 
$idEmployee2 = $this->Pogeneralmodel->get_idEmployee($this->input->post('employee2'));
$employee2 = array_values($idEmployee2)[0]; 

$params = array(
    //I send these two variables with many other parameters (I removed them to make it shorter)
    'idEmployee1' => $employee1,
    'idEmployee2' => $employee2,
);

$po_general_id = $this->Pogeneralmodel->add_po_general($params);

The problem is that I get the Array to string conversion error. It seems like $employee1 and $employee2 are still considered as arrays.

This the query that runs when I try to insert.

Unknown column 'Array' in 'field list'

INSERT INTO `po_general` (`idEmployee1`, `idEmployee2`) VALUES (Array, Array)

Thanks!

EDIT: Here is the var_dump for employee1 after running the query with the function get_idEmployee

array (size=1)
    0 => 
        array (size=1)
        'id' => string '1' (length=1)

Upvotes: 0

Views: 602

Answers (1)

Himanshu Upadhyay
Himanshu Upadhyay

Reputation: 6565

So you can modify your code like this:

$idEmployee1 = $this->Pogeneralmodel->get_idEmployee($this->input->post('employee1'));
$employee1 = array_values($idEmployee1)[0]['id']; 
$idEmployee2 = $this->Pogeneralmodel->get_idEmployee($this->input->post('employee2'));
$employee2 = array_values($idEmployee2)[0]['id']; 

$params = array(
    //I send these two variables with many other parameters (I removed them to make it shorter)
    'idEmployee1' => $employee1,
    'idEmployee2' => $employee2,
);

$po_general_id = $this->Pogeneralmodel->add_po_general($params);

This is the solution.

Upvotes: 1

Related Questions