L’auteur explique comment optimiser Doctrine ORM pour éviter non seulement le problème classique du N+1, où l’accès aux relations dans une boucle génère des dizaines voire centaines de requêtes, mais aussi le piège du produit cartésien qui survient lorsqu’on tente de tout charger en une seule requête avec de nombreux LEFT JOIN : bien que n’affichant qu’une requête dans le profiler, ce type de jointures multiplie les lignes SQL retournées (chaque combinaison de collections), ralentit la page et surcharge Doctrine lors de l’hydratation des objets. La solution proposée repose sur une hydratation en plusieurs étapes en chargeant d’abord les entités principales avec une relation, puis en « primeant » séparément les autres relations via des requêtes successives utilisant l’Identity Map de Doctrine, ce qui aboutit à quelques requêtes légères et prévisibles sans explosion des résultats.
26574 shaares
1 résultat
taggé
Identity-Map