Vlastní nette filtr – výpis „nulového“ datumu z DB

před rokem

Alsatian
Člen | 140
+
0
-

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)

před rokem

Ondřej Kubíček
Člen | 414
+
0
-

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…

před rokem

Alsatian
Člen | 140
+
0
-

@OndřejKubíček je to tak. V DB vidím nuly a v php „-0001–11–30 00:00:00“
Mám tedy detekovat tohle? Je to standardní pro všechny verze PHP třeba? :D
Ideální by byla podmínka typu if date is null? nebo něco podobného.

Editoval Alsatian (28. 9. 2018 20:09)

před rokem

Ondřej Kubíček
Člen | 414
+
+3
-

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

před rokem

Alsatian
Člen | 140
+
0
-

@OndřejKubíček Je to tak. Díky moc :)