Man leidet an einem Shopware Projekt und möchte mal eine Übersicht der Queries, aber der Doctrine-Query-Tab im Symfony-Profiler ist leer.
Zwei naheliegende Verdächtige (HTTP-Full-Page-Cache, dann der Objekt-/Route-Cache) waren beide falsch: Ein Test mit request-lokalem Array-Cache lieferte weiter 0, also landeten die Queries gar nicht erst im Collector. Ursache war eine fehlende optionale Dev-Dependency. Das Framework nutzt gar kein DoctrineBundle, sondern hängt sein eigenes Query-Profiling nur dann an die DB-Connection, wenn das doctrine-bridge-Paket installiert ist, abgefangen über ein isInstalled('symfony/doctrine-bridge')-Gate im Kernel-Bootstrap von Shopware. Und was soll ich sagen, an der Stelle hat man bei der ursprünglichen Einrichtung des Projekts gespart. Und wer doctrine-bridge sagt, muss auch sql-formatter sagen.
vendor/shopware/core/Framework/Adapter/Kernel/KernelFactory.php:51-53: (SW 6.7.3.1)
if ((\PHP_SAPI !== 'cli' || in_array('--profile', $_SERVER['argv'] ?? []))
&& $environment !== 'prod' && InstalledVersions::isInstalled('symfony/doctrine-bridge')) {
$middlewares = [new ProfilingMiddleware()];
}
In diesem Fall hat mir die Installation der beiden Pakete mein heiß ersehntes Doctrine-Panel beschert.
ddev composer require --dev symfony/doctrine-bridge doctrine/sql-formatter
symfony/doctrine-bridge evtl. mit einem Version Constraint passend zur Symfony Version.