Merge pull request #1017 from LukeTowers/patch-2

Fix support for connection transaction logging in Laravel 5.5
This commit is contained in:
Barry vd. Heuvel 2020-03-24 07:30:57 +01:00 committed by GitHub
commit 0c785d2da9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 32 additions and 35 deletions

View File

@ -351,50 +351,47 @@ class LaravelDebugbar extends DebugBar
}
try {
$db->getEventDispatcher()->listen([
$db->getEventDispatcher()->listen(
\Illuminate\Database\Events\TransactionBeginning::class,
'connection.*.beganTransaction',
], function ($transaction) use ($queryCollector) {
// Laravel 5.2 changed the way some core events worked. We must account for
// the first argument being an "event object", where arguments are passed
// via object properties, instead of individual arguments.
if($transaction instanceof \Illuminate\Database\Events\TransactionBeginning) {
$connection = $transaction->connection;
} else {
$connection = $transaction;
function ($transaction) use ($queryCollector) {
$queryCollector->collectTransactionEvent('Begin Transaction', $transaction->connection);
}
);
$queryCollector->collectTransactionEvent('Begin Transaction', $connection);
});
$db->getEventDispatcher()->listen([
$db->getEventDispatcher()->listen(
\Illuminate\Database\Events\TransactionCommitted::class,
'connection.*.committed',
], function ($transaction) use ($queryCollector) {
if($transaction instanceof \Illuminate\Database\Events\TransactionCommitted) {
$connection = $transaction->connection;
} else {
$connection = $transaction;
function ($transaction) use ($queryCollector) {
$queryCollector->collectTransactionEvent('Commit Transaction', $transaction->connection);
}
);
$queryCollector->collectTransactionEvent('Commit Transaction', $connection);
});
$db->getEventDispatcher()->listen([
$db->getEventDispatcher()->listen(
\Illuminate\Database\Events\TransactionRolledBack::class,
'connection.*.rollingBack',
], function ($transaction) use ($queryCollector) {
if($transaction instanceof \Illuminate\Database\Events\TransactionRolledBack) {
$connection = $transaction->connection;
} else {
$connection = $transaction;
function ($transaction) use ($queryCollector) {
$queryCollector->collectTransactionEvent('Rollback Transaction', $transaction->connection);
}
);
$queryCollector->collectTransactionEvent('Rollback Transaction', $connection);
});
$db->getEventDispatcher()->listen(
'connection.*.beganTransaction',
function ($event, $params) use ($queryCollector) {
$queryCollector->collectTransactionEvent('Begin Transaction', $params[0]);
}
);
$db->getEventDispatcher()->listen(
'connection.*.committed',
function ($event, $params) use ($queryCollector) {
$queryCollector->collectTransactionEvent('Commit Transaction', $params[0]);
}
);
$db->getEventDispatcher()->listen(
'connection.*.rollingBack',
function ($event, $params) use ($queryCollector) {
$queryCollector->collectTransactionEvent('Rollback Transaction', $params[0]);
}
);
} catch (\Exception $e) {
$this->addThrowable(
new Exception(