2012-06-11 2 views
6

symfony2 엔티티에서 십진수 정밀도와 스케일을 어떻게 설정합니까? 나는이 같은 내 기업에 소수점 데이터 유형을 사용하여 경도 필드에 위도를 정의했습니다 :편집 폼에서 반올림 된 십진수 symfony2 + Doctrine2

/** 
* @ORM\Column(type="decimal", precision="10", scale="6", nullable=true) 
*/ 
protected $latitude; 

제대로 소수를 절약 할 새로운 객체를 지속 (내가 phpMyAdmin을에서 52.406374을 볼 수 있습니다). 그러나 편집 양식을 표시 할 때 숫자는 52,406으로 반올림되며 업데이트 후 52.406000으로 mysql에 저장됩니다. 아마도 Doctrine 구성에 문제가있을 수 있습니다. 그러나 무엇을 모르겠습니다.

왜 위도와 경도가 반올림됩니까?

해결책을 발견 :

심포니의 폼 성분 TYPE = "텍스트"로 소수점 형식 필드를 렌더링한다. 사용하는 경우 :

->add('latitude', 'number', array(
    'precision' => 6, 
)) 

올바르게 렌더링됩니다. 코멘트의 스레드가 내 문제를 설명하지 않습니다. 그들은 'float'정밀도로 버그를 이미 수정 한 것 같습니다. 나뭇 가지 템플릿에서 위도를 표시 할 때 적절한 (반올림되지 않은) 값을 표시하고있었습니다.

+0

[this] (http://stackoverflow.com/questions/5635500/doctrine-2-decimal-can-only-contain-14-digits)로 인한 것이 아닙니까? – jkucharovic

답변

2

어쩌면 문제는 교리 매핑 때문이 아닐 수도 있습니다. NumberType에 대한 참조 문서를보십시오.

사용하는 것은 무엇입니까? 아마도 정밀도를 변경해야합니다.

+0

맞습니다. 이미 편집을 게시했습니다. –

+0

오, 죄송합니다 .../ –

+0

1 분 더 빨라졌습니다. –

1

Symfony3.2에서 사용해야하는 규모 :

$builder->add('lat', NumberType::class, array('scale' => 8)); 

이 필드 (rounding_mode를 통해) 라운드 제출 된 값까지 허용됩니다 얼마나 많은 소수 지정합니다. 예를 들어, 축척 이 2로 설정된 경우 제출 된 값인 20.123은 예의 경우 20.12로 반올림됩니다 (rounding_mode에 따라 다름).

관련 문제