Nette\Database – jak editovat mysql hodnoty?
- futuretux
- Člen | 24
Ahoj, narazil jsem na takový zvláštní problém. Předpokládm, že to bude jen hloupost a něco nechápu nebo přehlížím, ale už vážně nevím kam kouknout.
Mám v DB položku datetime a chtěl bych do ní přiřadit hodnotu z mysql
fce NOW()
. Bez DB layeru stačilo napsat do dotazu
'... , polozka = NOW(), ... '
a vse OK, ale zde mi to
nefunguje – po vložení (z pole hodnot)
'polozka' => 'NOW()'
je položka nulová.
Chápu, že to bude nějaká vlastnost toho layeru. Například co je v apostrofech je string a pokud to dávám do něčeho co není textové, tak se to nějak eliminuje. Ale u toho NOW() mě opravdu nenapadá jak jinak to tam vnutit.
Jak se tedy dají vkládát přes DB layer hodnoty, které zná mysql?
Editoval futuretux (28. 8. 2011 9:33)
- futuretux
- Člen | 24
Aha, výborně. Funguje to. Děkuji mnohokrát.
Nicméně tohle je velmi žhavý kandidát na zapsání do https://doc.nette.org/cs/database
- bojovyletoun
- Člen | 667
no když vidím „new \Nette\Database\SqlLiteral“, tak by mi upadla ruka
→ je téměř nutnost vytvořit si alias function sqlit($s){return new \Nette\Database\SqlLiteral($s);}
- Tharos
- Člen | 1030
@bojovyletoun: Samozřejmě tedy proti gustu žádný dišputát, ale dávej si pozor, abys o tu ruku stejně nakonec nepřišel – totiž aby Ti ji třeba náhodou neurval někdo, kdo s tím Tvým kódem bude muset jednou pracovat :).
Znáš kouzelné slůvko (tj. klíčové slovo) use
? :)
use Nette\Database\SqlLiteral;
new SqlLiteral(...);
Edit: Asi to slůvko znáš, protože ho koukám používáš i ve svém podpise :). Tím spíš mě ten Tvůj post zaráží…
Editoval Tharos (18. 9. 2011 0:11)