Minified verze a logování SQL v panelu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ng9
Člen | 7
+
0
-

Zdravím,

tak už nějaký ten den sleduji videa co tu jsou a pročítám dokumentaci a pomalu do toho pronikám, ale zatím opravdu jen pomalu :). Potřeboval bych poradit. Na stávající projekt jsem nahodil minified verzi, abych využil některé funkce nette. Spustil debugger, naskočil debug panel a zdá se vše funguje jak má. Dále jsem si vytvořil připojení k databázi a SQL dotazy se řádně provádí, co mi však nefunguje je, že se v panelu nezobrazuje seznam vykonaných SQL – jak na to?

V projektu to mám takto…

	require_once "./nette/nette.min.php";

	use
		Nette\Diagnostics\Debugger,
		Nette\Utils\Validators,
		Nette\Utils\Strings,
		Nette\Database\Connection,
		Nette\Database\Diagnostics;

	Debugger::enable();

	$connection = new Connection("mysql:host=server;dbname=tabulka","user","password");
	$connection -> table("tabulka")->limit(5000);
	$connection -> query("SELECT * FROM tabulka LIMIT 1000");

Co mám udělat aby se tyto SQL dotazy zobrazily v panelu?
Mockrát děkuji.

Jan Endel
Člen | 1016
+
0
-

Nejjednoduší bude asi (netestováno):

Debugger::bar->addPanel(new \Nette\Database\Diagnostics\ConnectionPanel());

Editoval pilec (3. 3. 2012 10:39)

ng9
Člen | 7
+
0
-

pilec napsal(a):

Nejjednoduší bude asi (netestováno):

Debugger::bar->addPanel(new \Nette\Database\Diagnostics\ConnectionPanel());

Díky za nasměrování, uvedený příklad přesně nefunguje, ale použil jsem následující:

Debugger::addPanel(new \Nette\Database\Diagnostics\ConnectionPanel);

Nyní v debug baru mám kolonku queries, ale problém je, že se provedené dotazy do toho baru nezachytí a stále jen zobrazuje nulu. Čím to? Jak to donutit aby se ty dotazy předávaly do debug baru?

Mockrát děkuji.

ng9
Člen | 7
+
0
-

Tak jsem našel prozatím toto řešení:

	$connection = new Connection("mysql:host=server;dbname=database","user","password");
	$panel = new \Nette\Database\Diagnostics\ConnectionPanel;
	Debugger::addPanel($panel);

	$q = $connection ->  query("SELECT * FROM tabulka LIMIT 1000");
	$panel -> logQuery($q);
	$q = $connection -> query("SELECT * FROM tabulka2 LIMIT 1000");
	$panel -> logQuery($q);

Napadá vás nějaké jednodušší řešení než za každým dotazem volat logquery? Zkoušel jsem upravit přímo funkci query(); aby volala logQuery, ale házelo to chybu, že onu funkci to nezná a nepodařilo se mi to rozpohybovat…

Používate někdo toto logování na vlastním projektu s minified verzí? Jak to řešíte?

Díky všem za jakékoliv postřehy.

mkoubik
Člen | 728
+
0
-

Mělo by fungovat $connection->onQuery[] = callback($pnel, 'logQuery'); (píšu z hlavy).

ng9
Člen | 7
+
0
-

mkoubik napsal(a):

Mělo by fungovat $connection->onQuery[] = callback($pnel, 'logQuery'); (píšu z hlavy).

Díky, přesně tohle jsem potřeboval :).