Sloupec TIME – DateInterval → DateTime
- kolsi
- Člen | 131
Lze nějak vypnout, že všechny sloupce typu TIME nyní používají objekt DateInterval a už ne DateTime ? Vzhledem k tomu, že čas ukládáme na hodně místech, tak to prakticky pro nás znamená přepsat 3/4 celé aplikace. Navíc v PHP neexistuje pro DateInterval žádná rozšířená podpora – porovnávání, odčítání (resp. provedení té operace nevrátí chybu, ale nesmyslný výsledek), takže ten typ je pro nás celý k ničemu.
- David Matějka
- Moderator | 6445
Mohlo by jit vymenit ISupplementalDriver, konkretne napriklad podedit MysqlDriver
a prekryt metodu getColumnTypes, aby zmenila
IStructure::FIELD_TIME_INTERVAL
na
IStructure::FIELD_TIME
, tedy opak, co ta metoda dela
ted :)
pak ten driver nastavis v configu:
database:
options:
driverClass: My\Driver
- kolsi
- Člen | 131
Díky, vyzkoušim.
Čekal jsem, jestli nebude někde nějaký flag, který stačí nastavit, ale když jsem prošel kód, tak to vypadá, že neni. Nejrychlejší řešení mi přijde ten řádek zakomentovat rovnou v Nette.
Nejhorší na tom je, že programátor/uživatel se vůbec nemusí dozvědět, že se něco změnilo, protože vše funguje normálně dál, jenom operace jako porovnání, odečtení apod. vrátí nesmysl (a člověk si na první pohled nemusí všimnout, že 6:00 < 7:00 vrátí false).