Skip to content

Commit 189c984

Browse files
committed
query logger should be registered directly on dispatcher
We were accidentally registering the listener on the shared dispatcher multiple times - once for each connection. This caused duplicate query logs!
1 parent c4c2b38 commit 189c984

2 files changed

Lines changed: 14 additions & 10 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- Overhauled ufAlerts, improving efficiency, reliability, and fixed a discovered edge case that caused `render` to never complete. (part of #646)
77
- ufAlerts will only auto-scroll when outside the viewport (even if only partially). Can be overriden with `scrollWhenVisible: true`. (#714)
88
- Rebased ufCollection, and ufForm with new jQuery plugin template. (part of #646)
9+
- Fix issue with duplicate query logs when using multiple databases
910

1011
## v4.0.20-Alpha
1112
- Remove pivot columns from pagination subquery in BelongsToManyThrough, to deal with MySQL's `only_full_group_by` warning

app/sprinkles/core/src/ServicesProvider/CoreServicesProvider.php

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Illuminate\Cache\MemcachedConnector;
1515
use Illuminate\Container\Container;
1616
use Illuminate\Database\Capsule\Manager as Capsule;
17+
use Illuminate\Database\Events\QueryExecuted;
1718
use Illuminate\Events\Dispatcher;
1819
use Illuminate\Filesystem\Filesystem;
1920
use Illuminate\Session\DatabaseSessionHandler;
@@ -280,7 +281,9 @@ public function register(ContainerInterface $container)
280281
$capsule->addConnection($dbConfig, $name);
281282
}
282283

283-
$capsule->setEventDispatcher(new Dispatcher(new Container));
284+
$queryEventDispatcher = new Dispatcher(new Container);
285+
286+
$capsule->setEventDispatcher($queryEventDispatcher);
284287

285288
// Register as global connection
286289
$capsule->setAsGlobal();
@@ -293,16 +296,16 @@ public function register(ContainerInterface $container)
293296

294297
foreach ($config['db'] as $name => $dbConfig) {
295298
$capsule->connection($name)->enableQueryLog();
296-
297-
// Register listener
298-
$capsule->connection($name)->listen(function ($query) use ($logger) {
299-
$logger->debug("Query executed on database [{$query->connectionName}]:", [
300-
'query' => $query->sql,
301-
'bindings' => $query->bindings,
302-
'time' => $query->time . ' ms'
303-
]);
304-
});
305299
}
300+
301+
// Register listener
302+
$queryEventDispatcher->listen(QueryExecuted::class, function ($query) use ($logger) {
303+
$logger->debug("Query executed on database [{$query->connectionName}]:", [
304+
'query' => $query->sql,
305+
'bindings' => $query->bindings,
306+
'time' => $query->time . ' ms'
307+
]);
308+
});
306309
}
307310

308311
return $capsule;

0 commit comments

Comments
 (0)