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.