Doctrine Inheritance
Présentation par Rémi Janot sur les stratégies d'héritage Doctrine (STI et CTI) pour mapper l'héritage PHP en base de données au Symfony Live Paris 2026

Cette sketchnote a été réalisée lors du Symfony Live Paris 2026 le 27 mars 2026. Elle illustre la présentation "Doctrine Inheritance" donnée par Rémi Janot, qui explique comment mapper les hiérarchies d'héritage PHP en base de données avec Doctrine.
Contenu de la présentation
Rémi Janot part d'un exemple d'héritage PHP classique : une classe User (login, password) dont héritent Admin (avec permission) et Customer (avec address). La question est de savoir comment représenter cet héritage en base de données. Le discriminant est une colonne de type dans la table mère, configurable via une discriminator map, un enum PHP, avec la possibilité de limiter les niveaux d'héritage. La Mapped Superclass est également mentionnée. Deux stratégies principales sont comparées : le STI (Single Table Inheritance) qui utilise une table unique, simple pour peu de types mais génère beaucoup de champs nullables ; et le CTI (Class Table Inheritance) qui crée des tables filles jointes à la table mère via l'id, sans champs superflus mais avec un coût en jointures qu'on peut atténuer avec des index.