Vlastní nette filtr – výpis „nulového“ datumu z DB
- Alsatian
- Člen | 175
Ahoj.
Do MySQL ukládám datum jako datový typ „date“. Pokud jej
nedefinuji při vložení záznamu, v DB vidím jako prázdnou
hodnotu 0000–00–00
(v případě použití „timestamp“ pro uložení datumu včetně času
potom 0000–00–00 00:00:00)
Při vypsání pomocí
{$datum|date:'j. n. Y'}
se prázdná hodnota datumu vypíše nehezky „30. 11. –0001“
Napadlo mě proto vytvořit si vlastní filtr, který by vracel "" nebo datum, pokud je zadáno. Ten vypadá takto:
$this->template->addFilter('datum', function ($datum, $format = 'j. n. Y') {
if($datum == "0000-00-00 00:00:00" || $datum == "0000-00-00") return "";
else return \Nette\Utils\DateTime::from($datum)->format($format);
});
Nedaří se mi ale detekovat prázdné datum v tabulce DB pomocí „if($datum == ‚0000–00–00 00:00:00‘ || $datum == ‚0000–00–00‘)“
V latte použiji svůj filtr „datum“
{$datum|datum:'j. n. Y'}
Napadá, prosím, někoho, jak na to?
Editoval Alsatian (28. 9. 2018 20:06)
- Ondřej Kubíček
- Člen | 494
co znamená nepodařilo se mi detekovat? co je v té proměnné
$datum
? tak tam ty nuly asi nejsou ne, když ti to neprojde…
- Ondřej Kubíček
- Člen | 494
a na tu db používáš co? database explorer? něco totiž převede ty data na datetime object nejspíš, proto tam nevidíš nuly, ale to co vidíš…
není lepší mít ten sloupeček nadefinovaný jako nullable? bud tam bude hodnota nebo NULL a měl bys klid