ORM : Le traducteur entre PHP et SQL
Le choc des cultures : Objets vs Tables (PHP ⟷ SQL)
Un développeur Symfony passe ses journées à manipuler des objets PHP. C'est intuitif et structuré.
Cependant, pour enregistrer des informations de façon permanente, il faut les envoyer dans une base de données. Et là, c'est un autre monde car la base de données ne connaît pas les "objets" et ne comprend que les tables.
De plus, il faut utiliser le langage SQL, qui peut vite devenir complexe et rigide.
Existe-t-il une méthode permettant d’interagir avec une base de données via des objets ? 🤔 Si tel est le cas, cela simplifierait grandement notre travail !
La réponse est "oui", et cela grâce à l’ORM.
Symfony, comme PHP en général, permet d’utiliser directement des requêtes SQL. Cependant, cette approche est fastidieuse et sujette aux erreurs.
La solution : L'ORM (Object Relational Mapping)
L'ORM est un "traducteur" automatique. Son rôle est de faire correspondre (mapper) vos classes PHP aux tables de votre base de données.
Créer, modifier et rechercher des données dans une base de données devient un jeu d'enfant.
Quel ORM choisir ?
Doctrine est l'ORM utilisé par Symfony. Et il se compose en deux éléments : l'un est là pour ranger et modifier, l'autre est là pour chercher.
L'Entity Manager (Le gestionnaire)
L’Entity Manager (ou "Gestionnaire d'Entités") est l'assistant qui s'occupe de l'action. C’est lui qui fait le lien entre vos objets PHP et votre base de données.
Retenez ceci : L'Entity Manager est celui qui écrit (Ajouter, Modifier, Supprimer).
Le Repository
Le Repository (ou "Dépôt") est l'assistant qui s'occupe de la lecture. Chaque table de votre base de données possède son propre Repository dédié.
Retenez ceci : Le Repository est celui qui lit (Chercher, Filtrer, Récupérer).
Différence entre l'Entity Manager et le Repository
Si vous avez encore des difficultés à distinguer l’Entity Manager du Repository, ne vous inquiétez pas, la différence vous apparaîtra plus clairement lorsque vous utiliserez Doctrine dans Symfony.
Mais avant de faire quoi que ce soit, il faut créer et configurer notre base de données.
