I have several fields in my database that are DECIMAL(10,2) or INT values, when I return the results everything is returned as string.
Example:
$sql = "SELECT id, operacion_id FROM operaciones";
$query = $this->db->query($sql);
$result = $query->getResultArray();
return $this->response->setStatusCode(200)
->setContentType('application/json')
->setJSON($result);
And that returns:
[{
"id": "31",
"operacion_id": "ES-2021-0031"
},
{
"id": "30",
"operacion_id": "ES-2021-0030"
}]
I tried to put directly in system\Database\MySQLi\Connection.php connect() method:
$this->mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, true);
This works well but I know that it is not upgrade safe.
You should be able to apply this option to mysqli
property of your database object.
// run this after your DB connection has been initialized
$this->db->mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, true);
// and then run your queries
$query = $this->db->query($sql);
When working with prepared statements, you don't have to apply this setting as prepared statements always return the data in the correct type.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With