Oznámení
Dibi\Row a DateTime vs Dibi\DateTime
před 3 lety
- jan-kratochvil
- Člen | 14
Ahoj, upgradoval jsem dibi na 3× a mám problém, že mi Dibi\Row vrací DateTime místo původního Dibi\DateTime. Nevíte proč to tak je? Změnil jsem i ovladač z odbc na sqlsrv.
Díky za nápady.
před 3 lety
- jan-kratochvil
- Člen | 14
pokud udělám fetch tak to vypadá nádledovně:
object(Dibi\Row)#13 (4) {
["user_jmeno"]=>
string(3) "Jan"
["user_prijmeni"]=>
string(11) "Kratochvíl"
["user_dat_nar"]=>
object(DateTime)#11 (3) {
["date"]=>
string(26) "1977-01-26 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
["user_dat_reg_tk"]=>
object(DateTime)#12 (3) {
["date"]=>
string(26) "2013-05-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
}
pokud udělám echo, tedy chci využít tostring, tak mě to nejde, přitom
dibi\DateTime metodu tostring má..
Catchable fatal error: Object of class DateTime could not be converted to string
Editoval jan-kratochvil (5. 10. 2016 15:44)
před 3 lety
- jan-kratochvil
- Člen | 14
Koukal jsem ještě do kódu a zjistil, že o tohle se stará funkce normalize() v class Result a samozřejmě vypadá OK. Nemůžu nějak blbě používat namespace?
před 3 lety
- David Grudl
- Nette Core | 6806
Jsou tam na to i testy, takže netuším v čem by mohl být problém.
před 3 lety
- jan-kratochvil
- Člen | 14
Tak problémů je nakonec víc, kdyby to někdo řešil…
Prvotně, problém se týká přímo toho ovladače sqlsrv (já kompiloval nativní ovladač od MS pro linux), který vrací ve funkcích fetch datum rovnou jako DateTime, toho se musí člověk zbavit nastavením parametru ‚ReturnDatesAsStrings‘=>true při connectu. Dále funkce sqlsrv_field_metadata vrací nějká divná čísla dle číselníku MS (https://msdn.microsoft.com/…c296197.aspx) která se musí přeložit na textové hodnoty.Ty potom ten type hinter v Dibi už vezme a funguje to perfektně.
Davide díky.