On my development server the JSON response from the Laravel 5 controller shows the data in the correct types.
e.g
imdb_rating: 7.6
imdb_votes: 6271
But on the production server, the JSON response is sent back as strings.
imdb_rating: "7.60"
imdb_votes: "6271"
Both development and production have the same version of PHP installed (5.6.11-1).
Any ideas on what may be causing this behaviour?
I just ran into this same issue! For those of you looking for a more appropriate solution, you might want to check out the
$casts
property for Eloquent models.The accepted solution will work, but it will also convert fields that you may not want converted. I would recommend adding this to your Eloquent model:
This will convert the values directly in your model object, so you won't need to worry about updating multiple endpoints. I hope this helps others as it did me!
Make sure to use MySQL Native Driver which will support native data types.
MySQL Client Library will return all fields as strings.
Another solution would be to use json_encode options with
JSON_NUMERIC_CHECK
.For example:
you can return the integer with typecasting like