CI 묻고 답하기

제목 쿼리 결과가 전부 string으로..
카테고리 CI 2, 3
글쓴이 마카바 작성시각 2017/01/25 21:28:12
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 20123   RSS

restful 라이브러리를 쓰고 있는데 (https://github.com/chriskacerguis/codeigniter-restserver)

디비에서 integer인 속성도 스트링으로 묶여서 나오는데요 

예를 들면 

{"version": "3"}

이렇게요..

제가 하고 싶은건 

{"version": 3}

이렇게 응답을 주고 싶은데 

해당 라이브러리 이슈에서 논의되고 있는 것을 찾아서

소스를 보니까 결국은 json_encode 할때 string으로 다 바뀌는 것 같아요

인코딩 시 NUMERIC_CHECK 옵션을 주면 전화번호 같은 숫자에서 0이 사라져버려서 

위험하기 때문에 넣지 않았다는데 

그러면 제가 원하는 형태의 응답을 주려면 어떤 방법이 있나요?

다른 분들은 어떻게 해결하시는지 궁금합니다.

 

 

 

 다음글 controller에서 사용할 수 없는 키워드들이 무엇... (5)
 이전글 코드이그나이터 로그인 세션 (4)

댓글

변종원(웅파) / 2017/01/26 12:41:36 / 추천 0

http://php.net/manual/kr/function.json-encode.php

<?php
$arr 
= array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo 
json_encode($arr);
?>

위 예제의 출력:

{"a":1,"b":2,"c":3,"d":4,"e":5}
마카바 / 2017/01/26 16:29:18 / 추천 0
//모델에서 
함수{
return $this->db->select("*")->from("some_table")->get()->result();
}


//컨트롤러에서 
$response = $this->model_m->함수();
echo json_encode($response);

//결과
[{"version": "13"}, {"version":"15"}]

이렇게 나옵니다 ㅠ
쿼리 빌더에서부터 그렇게 되나보네요 
좋은 방법이 없을까요?

 

변종원(웅파) / 2017/01/26 19:30:54 / 추천 0
마카바/ 버전 항목은 int인가요?
마카바 / 2017/02/02 23:50:21 / 추천 0

네 디비는 int로 되어있습니다 

원래 쿼리 빌더가 이런가요?

한대승(불의회상) / 2017/02/03 07:26:44 / 추천 0

DTO에 해당하는 커스텀 클래스를 정의하시면 해결 가능합니다.

아래 메뉴얼 부분 참고하셔서 원하는 데이터형으로 변환 하시는 작업을 진행하세요.

http://www.ciboard.co.kr/user_guide/kr/database/results.html#custom-result-objects