Doctrine
Doctrine
Doctrine
(Object-Relational Mapping) :
Doctrine
UP Web
AU: 2020/2021
Plan
1. Introduction
2. Doctrine2
3. Les entités
4. La Migration
5. Entity Manager: Manipuler les entités avec Doctrine2
6. Les relations entres entités avec Doctrine2
2
Introduction
❑ La programmation Orientée Objet, utilisant une base de
données relationnelle, nécessite de convertir les
données relationnelles en objets et vice-versa.
3
Object-Relational Mapping (ORM)
❑ C’est une couche d’abstraction à la base de donnée.
❑ ORM fait la relation entre les données orientées objet et
les données relationnelles.
4
Object-Relational Mapping
❑ Les ORM les plus connus:
En Java: - Hibernate
- JPA (Java Persistance API)
- SimpleORM
En .NET: - Nhibernate
- Entity Framework
Quel choix pour PHP:
- Doctrine
- Propel
- RedBean
5
Object-Relational Mapping
Avantages:
❑ Simplifie l’accès aux données
❑ Facilite le changement de SGBDR
❑ Permet une indépendance du code vis-à-vis du SGBDR utilisé
6
Doctrine
7
Doctrine - Caractéristiques
Une classe qui correspond à chaque table
Une classe = une « Entité »
8
Doctrine – Architecture Technique
9
Architecture Technique de Doctrine
Doctrine - Caractéristiques
10
Configuration de la base de
données
Configurer la base de données de l’application
dans le fichier .env
11
Création de la base de données
12
Les entités
Il existe deux méthodes pour générer les entités :
13
Les entités
2. Méthode en utilisant les commandes
14
Les entités
Configuration de l’entité:
15
La Migration
La migration permet de gérer les mises à jours et les évolutions de votre base de
données.
Une image = Une évolution de la base de donnée
La commande ci-dessous nous permet de créer un fichier de migration:
➔ php bin/console make:migration
16
La Migration
17
La Migration
doctrine:migrations:current Afficher la version actuelle
18
Entity Manager
❑ EM est un gestionnaire d’entités: le chef d’orchestre de l’ORM
Doctrine
19
Manipulation des entités avec
Doctrine2
Tout d’abord, On doit récupérer l’entity manager
➔ $em= $this->getDoctrine()->getManager()
20
Manipulation les entités avec
Doctrine2
• La méthode remove() indique à Doctrine de supprimer l'entité en
argument de la base de données
➔ $em->remove($object)
21
Création d’un Formulaire
Un formulaire Symfony est l’image d’un objet existant
22
Création d’un Formulaire
Principe
23
Création d’un Formulaire
Méthode 1: Création d’un formulaire dans le controlleur(½)
24
Création d’un Formulaire
25
Création d’un Formulaire
Problématique:
Comment alléger le contrôleur ?
Solution:
Générer une classe qui s’occupe de la construction d’un formulaire
Comment?
utilisation de la commande:
php bin/console make:form FormName
26
Création d’un Formulaire
Méthode 2: Utilisation de la commande
La commande suivante nous permet de créer un Formulaire :
php bin/console make:form FormName
27
Création d’un Formulaire
L’envoi du formulaire à la page twig
28
Les relations entre les entités
Les types de relation possibles
Une relation (ou une association) peut être:
30
Les relations entre les entités
One To One ,unidirectionnel
Exemple : un seul étudiant possède une seule adresse
31
Les relations entre les entités
One To Many ,unidirectionnel
Exemple : un étudiant admet plusieurs num de téléphone.
32
Les relations entre les entités
Many To Many ,unidirectionnel
Exemple : plusieurs étudiants réalisent plusieurs projets.
33
Les relations entre les entités
Remarques:
❏ Les relations, qu’on a étudiées, sont unidirectionnelles
❏ C’est à dire on peut faire $student->getProjects()
❏ Mais on ne peut pas faire $project->getStudent()
Solution:
❏ Rendre les relations bidirectionnelles
34
Les relations entre les entités
One To One ,bidirectionnel
Exemple : un étudiant possède son propre carte d’étudiant.
36
Les relations entre les entités
Many To Many ,bidirectionnelle avec table de jointure
37
Les relations entre les entités
Many To Many ,bidirectionnelle avec table de jointure
38
Les relations entre les entités
Many To Many ,bidirectionnelle avec table de jointure
39
Les relations entre les entités
Many To Many ,bidirectionnelle avec table de jointure
Student.php
Club.php
40
Atelier 4
41
Références
• https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.htmlhttp://
php.net/manual/fr/language.oop5.magic.php
• https://symfony.com/doc/current/doctrine.html#doctrine-queries
42