DIBI – sloupec TIME a jeho zápis

- Šaman
- Člen | 2668
Ahoj. Řeším, jak pracovat s časem (bez datumu, jen denní čas) v Dibi.
V databázi je na to typ sloupce time. Dibi mi z daného sloupce
vytvoří DateInterval.
Problém ale je, že tento DateInterval tam neumí zapsat. :-o
Dělám v LeanMapperu, takže potřebuji nějaký typ property, kterou lze
jak načíst, tak zapsat. Vzhledem k tomu, že Dibi vrací DateInterval,
naučil jsem entitu pracovat s ním, ale teď mi to odmítá zapisovat.
V query se objeví např:
monday_begin_from=**Unexpected DateInterval**.
Tušíte někdo, jak z toho ven, aniž bych musel úplně odstranit typovou
kontrolu a pracovat jen se stringy?
(P.S. DateTime se mi taky nelíbí, protože obsahuje neplatnou indormaci
o datu. Ale už jsem z toho tak zoufalý, že kdybych to mohl přepsat na
DateTime a datum tiše ignorovat, asi bych to udělal. To teď ale není
možné, protože ORM od Dibi dostane DateInterval a do proprerty DateTime ho
samozřejmě odmítne zapsat.)
Dibi to dělá od verze 3.0: https://phpfashion.com/…exy-na-ceste
Editoval Šaman (29. 8. 2019 23:15)

- janpecha
- Backer | 75
Dost nepříjemný bug :-/
Pokud by ti stačilo, že místo DateInterval budeš mít v
Row stringy, tak by možná šlo udělat následující
(neověřoval jsem to):
- podědit si
LeanMapper\Connectiona přetížit metoducreateResultSet - v metodě
createResultSetnastavitResultu vlastní callback dosetRowFactory - v tom callbacku projet všechny hodnoty řádku a pokud narazíš na
DateIntervaltak tu hodnotu přeformátovat na string (případněDateTime) - takhle upravené pole zabalit do
Dibi\Rowa vrátit - v entitě si pak můžeš tu hodnotu pomocí
passThrupřemapovávat ze stringu naDateIntervala zpět