Sloupec TIME – DateInterval → DateTime

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kolsi
Člen | 131
+
0
-

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
+
0
-

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
+
0
-

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).