// Echoue : la table analytics n'existe pas dans la base applicative
$this->em->getRepository(PageView::class)->count([]);# config/packages/doctrine.yaml
doctrine:
dbal:
connections:
default: { url: '%env(DATABASE_URL)%' }
tracker: { url: '%env(TRACKER_DATABASE_URL)%' }public function __construct(
#[Autowire(service: 'doctrine.dbal.tracker_connection')]
private Connection $tracker,
) {}
public function getStats(): array
{
return [
'views_today' => (int) $this->tracker->fetchOne(
'SELECT COUNT(*) FROM page_views WHERE DATE(created_at) = CURDATE()'
),
'top_pages' => $this->tracker->fetchAllAssociative(
'SELECT path, COUNT(*) AS hits FROM page_views
GROUP BY path ORDER BY hits DESC LIMIT 10'
),
];
}- Multi-base = plusieurs connexions Doctrine bien nommées.
- Pour de l'agrégation read-only, le DBAL est plus direct que l'ORM.
- Garder l'analytics dans sa propre base : découplage propre.