2012-04-13 5 views
2

find 또는 fetch을 반환하면 반환되는 값 배열에는 열의 데이터 형식에 관계없이 모든 내 열의 문자열 표현이 포함됩니다. 그들이CakePHP에서 정수 열의 정수 값을 검색하려면 어떻게해야합니까?

array('field1' => '1') 

로 끝날

array('field1' => 1) 

CakePHP에서이 예상되는 동작은 다음과 같습니다이 같은 반환하는 대신 정수 컬럼의 의미? 내가 잘못 설정 했나요?

내 모델의 afterfind 메서드에서 코드를 작성하여 intval을 적절한 열에 호출하는 방법에 대해 생각했지만 실제로 가장 좋은 해결책입니까? CakePHP는 문자열이 아닌 열을보다 잘 처리 할 수 ​​있습니까?

+0

왜 정수 값을 사용해야합니까? – burzum

+0

문자열이 아닌 정수가 필요한 웹 응용 프로그램의 JSON으로 데이터를 출력하고 있습니다. –

+0

그러면 내 대답을보십시오. ;) – burzum

답변

1

모델 속성 Model :: _ schema에서 테이블의 필드가 어떤 필드인지 파악할 수 있습니다. 이를 바탕으로 입력란에콜백에 입력란의 값을 입력 할 수 있습니다.

정수가 될 필드를 수동으로 검사 할 수도 있지만 _schema를 사용하면 자동화 할 수 있습니다. 예를 들어 이것을 행동으로 사용하여이 기능이 필요한 모든 모델에 첨부 할 수 있습니다.

간단히 결과를 반복하고 정수가 될 필드를 확인한 후이를 입력하십시오.

+0

그래,이게 가장 좋은 해결책 인 것 같아. 나는 CakePHP가 이것을 자동으로하지 않는다는 것에 놀랐다. –

+0

왜냐하면 99 %의 추가 오버 헤드가 필요하기 때문입니다. 필자는 지난 몇 년 동안 필자가 출력해야 할 웹 캐스트 응용 프로그램을 제작하지 않았다. Btw : 방금 JSON 결과를 javascript 형식으로 캐스팅했습니다. 이것은 클라이언트 CPU에이 일을 옮길 것이다 :) – burzum

1

나는 이것도 알아 차렸고, 분명히 PDO가 모든 것을 문자열로 변환 한 결과이다. ticket을 제출했으며 장래에 기능을 강요하는 자동 기능이있을 것으로 기대됩니다.

클라이언트가 데이터를 변환 할 수 있지만 특히 타사 개발자에게 API를 제공 할 때 매우 '깨끗한'것은 아닙니다.

+0

예, 그것의 좋은 표. 아마도 받아 들여질 것입니다. – mark