2012-06-11 17 views
6

Symfony2 öğesinin ondalık kesinlik ve ölçeğini nasıl ayarlayabilirim? Bu gibi benim varlıktaki ondalık veri türünü kullanarak boylam alanlarda enlem tanımladığınız:Düzenleme formunda yuvarlatılmış ondalık Symfony2 + Doctrine2

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

doğru ondalık kaydeder yeni nesneyi devam eden (I phpMyAdmin'de 52.406374 görebilir). Ancak, düzenleme formunu görüntülerken, sayı 52,406'a yuvarlanır ve güncelleştirildikten sonra 52.406000 olarak mysql'de saklanır. Doktrin konfigürasyonumda muhtemelen bir sorun var, ama ne olduğunu bilmiyorum.

Enlem ve boylam neden yuvarlanıyor?

bir çözüm Bulunan:

Symfony'nin Formu bileşeni type = "text" olarak ondalık form alanını oluşturur. Kullanırken düzgün şekilde oluşturulmuştur. Yorumdan gelen konu, sorunumu açıklamıyor. Sanırım, "float'a" hassasiyetle düzeltilmiş hataları zaten düzeltmişler. Enlem şablonunda enlemi görüntülerken düzgün (yuvarlak değil) değer gösteriyordu.

+0

Bu neden kaynaklanmadı (http://stackoverflow.com/questions/5635500/doctrine-2-decimal-can-only-contain-14-digits)? – jkucharovic

cevap

2

Belki de sorun, doktrin haritalamanız nedeniyle değildir. NumberType için bu başvuru belgelerine bakın.

Ne kullanıyorsunuz? Muhtemelen hassasiyeti değiştirmek zorundasınız.

+0

Haklısınız - Düzenlemeyi zaten yayınladım. –

+0

Oh, üzgünüm ...:/ –

+0

1 dk daha hızlıydın –

1

Symfony3.2 size kullanmalıdır ölçek:

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

Bu alanda (ROUNDING_MODE yoluyla) mermi gönderilen değer kadar izin verilecek kaç ondalık sayılar belirtir. Örneğin, ölçeği 2 olarak ayarlanmışsa, 20.123 olarak gönderilen bir değer örneğine, 20.12'ye (yuvarlama_düğünüze bağlı olarak) yuvarlanır.