Tous droits réservés

Doctrine 2 : À l'assaut de l'ORM phare de PHP

Gérer ses données avec classe

Dernière mise à jour :
Auteur :
Catégories :
Temps de lecture estimé : 1 heure et 48 minutes

La programmation orientée objet a fini par prendre une part importante dans le monde de PHP. Bien qu’à priori simple, le besoin récurrent de faire communiquer un code orienté objet avec des sources de données extérieures telles que des base de données cache une grande complexité.

Comment faire correspondre facilement nos objets PHP aux informations dans la base de données ? Comment maintenir la cohérence entre le modèle objet de l’application et le schéma de la base de données ?

Ces problématiques, communes à tous les langages, ont été résolues grâce au mapping objet-relation (Object-Relational Mapping ou ORM). Cette technique permet d’établir un lien étroit entre notre modèle de données et la base de données relationnelles et nous donne ainsi le sentiment d’avoir une base de données orientée objet.

Le sigle ORM (Object-Relational Mapper) est aussi utilisé pour désigner les librairies qui implémentent cette technique.

Dans le monde du PHP, plusieurs librairies permettent de remplir ce besoin. nous pouvons citer Propel ou encore Eloquent (L’ORM de Laravel).

Et parmi toutes ces librairies, nous allons découvrir Doctrine 2 qui est très mature et largement supportée par presque tous les frameworks de l’écosystème de PHP (Symfony, Zend Framework, etc.). Nous aborderons entre autres :

  • comment installer et configurer Doctrine 2 ;
  • comment modéliser un système de données orienté objet avec Doctrine 2 ;
  • comment exploiter une base de données avec Doctrine 2.

Il est important de souligner que l’utilisation d’un ORM nécessite une bonne connaissance de la programmation orientée objet en PHP et des notions en modélisation avec des méthodes d’analyse et de conception comme UML1, Merise, etc.

Pour suivre ce cours, il faudra aussi savoir installer et utiliser le gestionnaire de dépendances Composer ainsi qu’un moteur de base de données relationnelle (MySQL, PostgreSQL, MSSQL, Oracle, etc.).


  1. Unified Modeling Language - Langage de modélisation unifié 

Les bases de Doctrine 2

  1. Installation et configuration de Doctrine 2

    1. Le fil conducteur du cours

    2. Pourquoi utiliser Doctrine 2 ?

    3. Installation et configuration

  2. Sauvegarder des entités grâce à Doctrine

    1. Création des entités

    2. Lier nos entités à Doctrine

    3. Sauvegarder les entités : À la découverte du gestionnaire d'entités

  3. Récupérer des entités avec Doctrine

    1. Récupérer une entité avec la clé primaire

    2. Récupérer une ou plusieurs entités selon des critères différents

    3. Les index

  4. Modifier et supprimer des entités

    1. La notion d'entité gérée par Doctrine

    2. Supprimer une entité

    3. Mise à jour d'une entité

    4. Fusionner une entité détachée

Les relations avec Doctrine 2

  1. Relation OneToOne - 1..1

    1. L'annotation OneToOne

    2. Interaction avec une entité ayant une relation

    3. La relation OneToOne bidirectionnelle

    4. L'annotation JoinColumn

  2. Relation ManyToOne et OneToMany - 1..n

    1. Relation ManyToOne

    2. Relation OneToMany

    3. Pratiquons : Création d'une entité sondage

  3. Relation ManyToMany - n..m

    1. Relation ManyToMany simple

    2. Relation ManyToMany avec attributs

    3. Création des participations

  4. TP : Finir la modélisation du sytème de sondage

    1. Pratiquons

    2. Proposition de solution

    3. Idées d'amélioration

Exploiter une base de données avec Doctrine 2

  1. À la rencontre du QueryBuilder

    1. Le QueryBuilder

    2. Les repositories personnalisés

  2. Optimiser l'utilisation de Doctrine

    1. Tracer les requêtes Doctrine

    2. Fetch mode (Extra-Lazy, Lazy, Eager) et lazy-loading

    3. Les jointures

  3. Configurer Doctrine pour la production

    1. La gestion du cache

    2. Les proxies

    3. Exemple de configuration

  4. Annexes

    1. Support des transactions

    2. Les références (ou comment économiser une requête)

    3. Owning side - Inverse side : gestion des relations

    4. Les événements Doctrine



Nous avons pu voir tout au long de ce cours que Doctrine apporte une grande facilité dans le traitement des données, le maintien de la cohérence du modèle et la gestion des relations entre les entités.

Les utilitaires en ligne de commandes permettent d’avoir un contrôle total sur la configuration et l’état de notre base de données.

En utilisant Doctrine, il est donc possible de créer et d’exploiter un schéma de données complet sans écrire une seule ligne de SQL.

Retenez néanmoins qu’il existe encore beaucoup de sujets à découvrir et que la documentation officielle reste la référence la plus complète si vous voulez approfondir votre apprentissage de Doctrine.

2 commentaires

Awesome. Vraiment awesome. Ça aborde des sujets pas classiques et peu/mal documentés. Toutes mes félicitations pour ce beau cours qui sera une référence à coup sûr ! :)

Mon seul regret est de ne pas y voir de références aux migrations et aux fixtures !

+3 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte