Skip to content

Instantly share code, notes, and snippets.

@Majkl578
Created May 9, 2010 13:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Majkl578/395144 to your computer and use it in GitHub Desktop.
Save Majkl578/395144 to your computer and use it in GitHub Desktop.
Simple Doctrine 2 SQL Logger
<?php
//Logger
$logger = new App\DoctrineLogger();
$config->setSQLLogger($logger); //instanceof Doctrine\ORM\Configuration
Nette\Debug::addPanel($logger);
<?php
namespace App;
use Nette\Web\Html;
class DoctrineLogger implements \Doctrine\DBAL\Logging\SQLLogger, \Nette\IDebugPanel
{
private $events = array();
/******** Doctrine\DBAL\Logging\SQLLogger *********/
public function logSQL($sql, array $params = NULL)
{
$this->events[] = array(
'sql' => $sql,
'params' => $params,
);
}
/******** Nette\IDebugPanel ********/
public function getId()
{
return 'doctrine-panel';
}
public function getTab()
{
return '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/'
. '9hAAABtElEQVR4nH2ToYsbQRSHv20iHlzEiIgRJ1ZUJKJwouIgda04cSKif0BFCxEtnGghMq'
. 'KiphCoWSilkSsKPVERaEXEBVa0EFHIioNGnFgRsSIHI3aZirlmb2/SPDPwdn/f/N6b9wJrLb'
. 'ejXM6t+T2DwiBHJzS6vYA90fQyWQpf3oEIZp1x0O3t03PPy+gOtAREwc9zrj+8sDt0/wc0ur'
. '1AXk6ct5aCJN4L8QDlcm5ZZ9AUyHNoh3shwe0mlsu5NfEI0gR0CIcdSGeunE0OD/scvPpYa2'
. 'rNgYlHsFqAUsggQl7HcDp04n/lfH5jdwLK758sl4n7cZNj0gQA6Z9Bfwh5BkrDRUz555f1AG'
. 'YxdXU3Be4fw8UEFtM6ZJNDYTCL2dZBNQfrFSiNjKbupgIozPazPB1iTA7nY6DKVz0Q5c5i6w'
. 'kvCj9VOdAduEwwb09cH4xBno+hc1w1eDaBlkJU6DuQR30QAWPgKkVOz+rib5FzqbR74ruAxo'
. 'PHAU8GsLkZorauxNPIjbfJkUFUW7Dg7jZef31v+RE5J20NV6kD6hB5Nva20wPAzUSmCWQraA'
. 'lyeAQ63LnafwHG7KzyWNAiIQAAAABJRU5ErkJggg==" />Doctrine 2 Logger';
}
public function getPanel()
{
$table = Html::el('table');
$table->add(
Html::el('tr')->add(
Html::el('th')
)->add(
Html::el('th style="width: 100%;"')->setText(
'SQL Query'
)
)->add(
Html::el('th')->setText(
'Query parameters'
)
)
);
foreach ($this->events as $event) {
ob_start();
dump($event['params']);
$params = ob_get_clean();
$table->add(
Html::el('tr')->add(
Html::el('td')->setText(
isset($ite) ? ++$ite : $ite = 1
)
)->add(
Html::el('td')->setText(
$event['sql']
)
)->add(
Html::el('td')->setHtml(
$params
)
)
);
}
return Html::el('div style="max-width: 900px;"')->add($table);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment