Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Doctrine] Typ kolumny float - czy to prawidłowe zachowanie?, Doctrine float generuje MySQL float(18,2)
DavidPL
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 27.04.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Doctrine z Symfony 1.4.12 dla następującego schematu:

  1. Tabela:
  2. columns:
  3. pole: { type: float }


generuje następujący SQL dla MySQLa:

  1. CREATE TABLE tabela (id BIGINT AUTO_INCREMENT, pole FLOAT(18, 2), PRIMARY KEY(id)) ENGINE = INNODB;



Czy to prawidłowe zachowania? Czy dla Doctrinowego typu "float" nie powinien być generowany MySQL-owy float lub double bez narzuconej precyzji?

http://www.doctrine-project.org/documentat...ata-types:float
Dokumentacja Doctrine 1.2 mówi:

Cytat
The float data type may store floating point decimal numbers. This data type is suitable for representing numbers withina large scale range that do not require high accuracy. The scale and the precision limits of the values that may be stored in a database depends on the DBMS that it is used.


http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Documentacja MySQL 5.0 mówi:

Cytat
For maximum portability, code requiring storage of approximate numeric data values should use FLOAT or DOUBLE PRECISION with no specification of precision or number of digits.


https://github.com/doctrine/doctrine1/blob/...aDict/Mysql.php
Więc dlaczego precyzja dla float i double jest wymagana i jeśli jej nie podamy to Doctrine uparcie doda ją samo?

  1. case 'float':
  2. $length = !empty($field['length']) ? $field['length'] : 18;
  3. $scale = !empty($field['scale']) ? $field['scale'] : $this->conn->getAttribute(Doctrine_Core::ATTR_DECIMAL_PLACES);
  4. return 'FLOAT('.$length.', '.$scale.')';
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
toffiak
post
Post #2





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Tutaj jest patch zmuszający doctrine do używania natywnego flota patch nigdy z niego nie korzystałem więc nie wiem czy działa.

Mozesz spróbować także dodać scale jako 0 i sprawdzić czy nadal po przecinku będą sie pojawiać liczby, tego też nie próbowałem.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 10:26