Контроллер Laravel 5, отправляющий целое число JSON в виде строки

На моем сервере разработки ответ JSON от контроллера Laravel 5 показывает данные в правильных типах.

например

imdb_rating: 7.6 imdb_votes: 6271 

Но на рабочем сервере ответ JSON отправляется обратно как строки.

 imdb_rating: "7.60" imdb_votes: "6271" 

В обоих версиях и выпусках установлена ​​такая же версия PHP (5.6.11-1).

Любые идеи о том, что может вызывать такое поведение?

Related of "Контроллер Laravel 5, отправляющий целое число JSON в виде строки"

Обязательно используйте MySQL Native Driver, который будет поддерживать собственные типы данных.

Можно преобразовать столбцы integer и float обратно в номера PHP, установив параметр MYSQLI_OPT_INT_AND_FLOAT_NATIVE connection, если вы используете библиотеку mysqlnd. Если установлено, библиотека mysqlnd проверит типы столбцов метаданных набора результатов и преобразует числовые столбцы SQL в номера PHP, если это позволяет диапазон значений типа данных PHP. Таким образом, например, столбцы SQL INT возвращаются как целые числа.

Клиентская библиотека MySQL вернет все поля в виде строк.

Другим решением было бы использовать параметры json_encode с JSON_NUMERIC_CHECK .

Например:

 return response()->json(["foo" => "bar"], 200, [], JSON_NUMERIC_CHECK); 

Я просто столкнулся с этой проблемой! Для тех из вас, кто ищет более подходящее решение, вы можете проверить свойство $casts для моделей Eloquent.

Принятое решение будет работать, но оно также преобразует поля, которые вы не захотите преобразовать. Я бы порекомендовал добавить это в вашу модель Eloquent:

 protected $casts = [ 'imdb_rating' => 'float', 'imdb_votes' => 'integer' ]; 

Это преобразует значения непосредственно в объект модели, поэтому вам не нужно беспокоиться об обновлении нескольких конечных точек. Надеюсь, это помогает другим, как и я!