Vypnout převod datetime na objekt Nette\Datetime
- j.salak
- Člen | 42
Můžu nějak vypnout převod získaných dat z databáze na Nette\Datetime, tzn. aby mi zůstala vrácený sloupeček ve formátu „Y-m-d H:i:s“. Potřebuji to kvůli následnému ukládání dat do JSON, kde mi to potom dělá problém protože při ukládání to neproběhne magic metodou __toString a uloží se mi to do JSON ve formátu:
{„date“:„2014–07–31 00:00:00.000000“,timezone_type
Díky za informaci
- h4kuna
- Backer | 740
Pokud máš objekt Nette\Datetime tak ten má metodu __toString a pokud se sama nespustí tak máš možnost ji vyvolat ručně přetypováním na string.
<?php
$datetime = new Nette\Datetime();
echo (string) $datetime;
?>
Vidím že máš v ukázce i mikrosekundy takže pak to musíš udělat jak píše @MartinitCZ
Editoval h4kuna (1. 9. 2014 20:47)
- j.salak
- Člen | 42
Díky za informaci, ale tohle všechno mě samozřejmě napadlo, ale je to nepraktické z důvodu, že já nevím jak se jmenuje soupec s datumem. Pro přiblížení situace. Mám tu notifikační plugin, který vytváří notifikace z různých tabulek a když notifikace není do zadanéh deadline splněna, tak se posíla buzer email, jehož šablony mám v latte a doplňuji do nich data, ale ta jsou pro každou notifikaci jiná, z jiných tabulek, tzn. jiné sloupce apod. A z důvodu této variability si hodnoty pro email ukládám do jednoho sloupce v JSONu a pak si je po deadline vyvolám a napním jima šablonu emailu. Tzn. ruční přepis datumu pro mě nepřicházi v úvahu.
Druhá možnost by byla, kdybych mohl prohnat dekodovany json opet tou samou metodou ktera probiha pri vraceni dat z databaze a ono by mi to zas vse predelalo podle typu, ale tu nevim jak zavolat.
- h4kuna
- Backer | 740
Dobře a filter v emailu (po staru helper) by ti nepomohl? Který by zjistil že dostává datový typ Datetime a pak to převede na string?
Případně pokud je to takový opruz. tak v db nepoužij datetime ale varchar a nebo to při výběru prožeň přes CONCAT(datetime_column), ale ani jedno nedoporučuji.