Doctrine\DBAL middleware for precise query debugging (DebugStack replacement). Compared to the default logging middleware, this one:
- Tracks the query's execution time
- Doesn't handle exceptions
- Doesn't track disconnections
composer require slam/dbal-debugstack-middleware
use Doctrine\DBAL\Configuration;
use Doctrine\DBAL\DriverManager;
use Doctrine\DBAL\ParameterType;
use Slam\DbalDebugstackMiddleware\DebugStack;
use Slam\DbalDebugstackMiddleware\Middleware;
$debugStack = new DebugStack();
$conn = DriverManager::getConnection(
$connectionParams,
(new Configuration)->setMiddlewares([
new Middleware($debugStack)
])
);
$result = $conn->executeQuery(
'SELECT * FROM users WHERE active = :active',
['active' => true],
['active' => ParameterType::BOOLEAN],
);
print_r($debugStack->getQueries());
/*
* Output:
*
Array
(
[0] => Slam\DbalDebugstackMiddleware\Query Object
(
[sql] => SELECT * FROM users WHERE active = :active
[params] => Array
(
[active] => true
)
[types] => Array
(
[active] => 5
)
[executionMs] => 72.05312
)
)
*/