Larabel 5 컨트롤러가 JSON 정수를 문자열로 전송
개발 서버에서 Larabel 5 컨트롤러로부터의 JSON 응답은 올바른 유형의 데이터를 표시합니다.
예
imdb_rating: 7.6
imdb_votes: 6271
그러나 프로덕션 서버에서는 JSON 응답이 문자열로 반환됩니다.
imdb_rating: "7.60"
imdb_votes: "6271"
개발 및 운영 모두 동일한 버전의 PHP가 설치되어 있습니다(5.6.11-1).
이 동작의 원인이 무엇인지에 대한 의견이 있습니까?
나도 같은 문제에 부딪혔어!보다 적절한 솔루션을 찾고 계신 분들을 위해 Archent 모델의 속성을 확인해 보시기 바랍니다.
승인된 솔루션은 작동하지만 변환하지 않을 수 있는 필드도 변환합니다.당신의 웅변 모델에 이것을 추가하는 것을 추천합니다.
protected $casts = [ 'imdb_rating' => 'float', 'imdb_votes' => 'integer' ];
이렇게 하면 모델 개체에서 직접 값이 변환되므로 여러 끝점을 업데이트할 필요가 없습니다.나처럼 다른 사람들에게 도움이 됐으면 좋겠어!
네이티브 데이터 유형을 지원하는 MySQL Native Driver를 사용해야 합니다.
MYSQLI_OPT_를 설정하여 정수를 변환하고 열을 PHP 번호로 되돌릴 수 있습니다.INT_AND_FLOAT_NATIVE 연결 옵션(mysqlnd 라이브러리를 사용하는 경우).설정된 경우 mysqlnd 라이브러리는 결과 집합 메타 데이터 열 유형을 확인하고 PHP 데이터 유형 값 범위가 허용하는 경우 숫자 SQL 열을 PHP 숫자로 변환합니다.예를 들어 SQL INT 열은 정수로 반환됩니다.
MySQL 클라이언트 라이브러리는 모든 필드를 문자열로 반환합니다.
또 다른 해결책은 json_encode 옵션을 사용하는 것입니다.JSON_NUMERIC_CHECK
.
예를 들어 다음과 같습니다.
return response()->json(["foo" => "bar"], 200, [], JSON_NUMERIC_CHECK);
저도 같은 문제가 발생했습니다.Larabel은 제가 공유 호스팅에 게시한 후 모든 수치 데이터를 문자열로 반환하고 있었습니다.하지만 로컬 호스트에서는 모든 것이 잘 작동하고 있습니다.그래서 이 해결책을 찾았습니다.
Goto cPanel --> PHP 버전 선택 --> 확장 탭
그런 다음 pdo_model을 끄고 nd_pdo_model 확장을 체크합니다.cPanel 확장 리스트의 다음 스크린샷을 참조해 주세요.
로컬 호스트와 공유 호스팅 서버의 phpInfo를 비교하여 이 솔루션을 찾았습니다.변경 전후의 phpInfo 페이지의 다음 2개의 스크린샷을 참조하십시오.
수정 전
수정 후
David Domain의 답변에 감사드리며, 이 솔루션을 찾을 수 있게 되었습니다.
제 답변이 누군가에게 도움이 되었으면 좋겠어요.
다음과 같이 타이프캐스팅을 사용하여 정수를 반환할 수 있습니다.
return (int)Post::find(1)->id;
이것도 도움이 될 것 같아!라라벨 v9.x를 사용하고 있습니다.
함수를 BaseController에 배치합니다.
class Controller extends BaseController {
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public static function json($json) {
return response()->json($json, 200, [], JSON_NUMERIC_CHECK);
}
}
이제 모델 또는 사용하는 모든 항목에서 다음을 수행합니다.
return self::json($all);
언급URL : https://stackoverflow.com/questions/31527050/laravel-5-controller-sending-json-integer-as-string
'programing' 카테고리의 다른 글
DISTINCT 키워드를 사용하면 SELECTED 식이 아닌 에러가 발생합니다. (0) | 2023.03.12 |
---|---|
워드프레스에 PHP 알림이 표시되지 않도록 하려면 어떻게 해야 합니까? (0) | 2023.03.12 |
라디오 버튼으로서의 WooCommerce의 종류 (0) | 2023.03.12 |
pymongo.cursor 변환 방법커서가 받아쓰기에 들어가나요? (0) | 2023.03.12 |
Swagger를 기본 시작 페이지로 설정하는 방법 (0) | 2023.03.12 |