Nejste přihlášen(a)
Stránky: 1
Přidal jsem do dibi dvě nové konfigurační direktivy v poli result:
detectTypes – aktivuje automatické detekce typů po
každém databázovém dotazu. Tj. automaticky se volá
$res->detectTypes().
formatDateTime (resultDateTime) – určuje formát, do jakého se bude převádět typ DATE nebo
DATETIME. Výchozí je objekt DateTime! Podrobněji
viz níže.
resultWithTables odstraněno (pokud to někdo používáte, dejte vědět, klidně vrátím zpět.)
Direktivy nastavíte při volání metody dibi::connect(...)
nebo new DibiConnection(...).
Pokud pracujete s datovými typy, mohou se vás dotknout tyto zpětně
nekompatibilní změny. Nastavení formátu skrze
result.formatDateTime totiž nahrazuje parametr
$format používaný u metod DibiResult::setType()
nebo convert() a ten je nyní ignorován.
Dále výchozím „formátem“ je objekt DateTime.
Pokud byste chtěli, aby výchozí formát byl UNIX timestamp jako
v předchozích verzích, nastavte result.formatDateTime =>
'U'. Pokud získanou hodnotu používáte v šablonách Nette, není
potřeba nic měnit, Nette si rozumí s DateTime stejně jako
s timestampem.
Interní metoda setTypes pracuje s jinou strukturou pole,
jednodušší, tvořenou páry field ⇒ formát. Stejnou strukturu je potřeba
použít u DibiTableX::$types. Interní metoda convert() je
protected.
Možná se to zdá jako hodně změn, ale jde o okrajové oblasti, které se dotknou jen minima uživatelů. Kdyby jste narazili na nějaké komplikace, dejte vědět.
Offline
Přimlouvám se za to doplnit ještě resultDateFormat a
resultTimeFormat, protože takhle dibi převádí všechno na
DateTime, což u některých komponent (a nejen tam) může způsobovat
problémy (když očekávám čas a chci ho parsovat jako čas, tak se mi
nehodí část s datem (kterou DateTime doplní i když v databázi třeba
není)).
I come to see with eyes uncloaded by hate.
Offline
Nemohl bys přidat podporu pro vlastní konvertní funkce? Metoda
convert je sice nově protected, ale to je v praxi na
nic, protože i když vytvořím potomka, který chování této funkce
upraví, tak dibi bude pořád vracet původní DibiResult.
Offline
V poslední verzi lze konfigurovat tímto způsobem i profiler. Raději jsem proto konfigurační direktivy vyčlenil do samostatných polí, takže konfig může vypadat třeba takto:
dibi::connect(array(
'driver' => 'mysql',
'user' => 'root',
'result' => array(
'detectTypes' => TRUE,
'formatDateTime' => ...,
),
'profiler' => array(
'run' => TRUE,
'explain' => FALSE,
),
);
Samozřejmě předchozí formát je podporován.
Offline
Stránky: 1