Problem z długościami geograficznymi w doctrine

Problem jaki mnie spotkał dotyczył projektu w diem-ie, który faktycznie jest rozbudowanym frameworkiem symfony.
Kłopot miałem z ustaleniem typu danych dla długości i szerokości geograficznych.

jobs:
  actAs:
    DmSortable:
#    Timestampable:
#    DmVersionable:
      
  columns:
    name:           { type: string(255), notnull: true }
    length:         { type: float, notnull: true }
    width:          { type: float, notnull: true }
    text:           { type: string(255), notnull: true }
    state:          { type: integer, notnull: true }
    is_active:      { type: boolean }
    type:           { type: integer, notnull: true }

Powinno być ok i baza powinna łykąć dane i faktycznie łykała, tyle że na wyjściu było zdecydowanie gorzej… z paramteru np: 42.12221222 dostawałem 42.12 czyli znacznie mniej dokładnie od tego co potrzebował klient.

Problem rozwiązałem zmieniając typ danych z float na decimal z dodatkowym parametrem „scale”.

jobs:
  actAs:
    DmSortable:
#    Timestampable:
#    DmVersionable:
      
  columns:
    name:           { type: string(255), notnull: true }
    length:         { type: decimal, notnull: true, scale: 10 }
    width:          { type: decimal, notnull: true, scale: 10 }
    text:           { type: string(255), notnull: true }
    state:          { type: integer, notnull: true }
    is_active:      { type: boolean }
    type:           { type: integer, notnull: true }

Może się komuś przyda :)

Leave a Reply