Nette\Database getSql při UPDATE
- czmickey
- Člen | 2
Ahoj, zjistil jsem, že když chci vypsat SQL dotaz, abych viděl, jak
vypadá, stačí přidat do skládání dotazu funkci getSql()
, ale
když si chci vypsat obsah UPDATE dotazu, tak mi to skončí chybou:
Call to a member function getSql() on a non-object
Kód:
Nette\Diagnostics\Debugger::barDump($this->db->table("tabulka")->update($update_data)->getSql());
Má to tak být nebo mam někde chybu? Zkusil jsem i aktualizovat na nejnovější verzi nette (měl jsem 2.0.7) a nepomohlo to. Nebo je nějaký jiný způsob jak zjistit, jaký SQL příkaz se bude provádět? Ideálně i s doplněnýma hodnotama (ve where podmínkách jsou jen otazníky).
- redhead
- Člen | 1313
Metoda update()
vykonává okamžitě operaci update a vrací
počet změněných řádků (jak se lze dočíst v dokumentaci),
proto nemůže getSql()
fungovat. U dotazování přes selection
API je to trochu jinak.
Výsledné SQL se můžeš dozvědět z Laděnky (debug bar), operace se tam logují defaultně. Nebo si můžeš registrovat callback onQuery v Connection.
Editoval redhead (25. 8. 2013 22:17)
- czmickey
- Člen | 2
redhead napsal(a):
Metoda
update()
vykonává okamžitě operaci update a vrací počet změněných řádků (jak se lze dočíst v dokumentaci), proto nemůžegetSql()
fungovat. U dotazování přes selection API je to trochu jinak.Výsledné SQL se můžeš dozvědět z Laděnky (debug bar), operace se tam logují defaultně. Nebo si můžeš registrovat callback onQuery v Connection.
Děkuju za odpověď. Debug bar sice dotazy zaznamenává, ale až po úspěšném provedení. A pokud nastane chyba, tak laděnka vyhodí jen část dotazu a pak se hodí, když znám přesně ten dotaz, kterej se má provést.