Ukládání DB dotazů do souboru
- David Matějka
- Moderator | 6445
napoj se na onQuery event, stejne jako to dela database panel do tracy https://api.nette.org/…nel.php.html#…
- n.u.r.v.
- Člen | 485
Mno tak nějak jsem to zkoušel, ale asi blbě:
Udělal jsem si LogRepository.php
v config.neon jsem dal do services:-
Model\LogRepository(Nette\Database\Connection(@nette.database.moje_database))
v LogRepository.php jsem měl:
namespace Model;
use Nette\Database\Connection;
use Nette;
class LogRepository extends Nette\Object {
private $db;
public function __construct(Nette\Database\Connection $database) {
$database->onQuery[] = array($this, 'logQuery');
}
public function logQuery(Nette\Database\Connection $connection, $result) {
$soubor = fopen("Cesta/k/souboru/queryLog.txt", "a");
fwrite($soubor, $result->getQueryString() . "\r\n" . '=====' . "\r\n");
fclose($soubor);
}
}
a do Base presenteru jsem dal:
protected $logRepository;
public function injectLogRepository(\Model\LogRepository $log) {
$this->logRepository = $log;
}
Ale bohužel to nic nedělalo (ani metoda logQuery se nespustila). Co mě chybí/kde jsem to zvrtal?Díky
- David Kudera
- Člen | 455
Teoreticky by mělo stačit dát té službě tag run
a nemělo
by být potřeba ji dávat ani do presenteru. Tím se spustí „sama“ hned na
začátku
services:
-
class: Model\LogRepository
tags: [run]
Ale když to nejde ani přes presenter, tak bude asi problém někde jinde
Editoval David Kudera (16. 7. 2014 12:48)
- David Matějka
- Moderator | 6445
to
- Model\LogRepository(Nette\Database\Connection(@nette.database.moje_database))
je hloupost. Bud tam nepredavej zadnej parametr, at se to autowiruje, nebo predej tu databazi
- Model\LogRepository(@nette.database.moje_database)