1
Chapitre 3 : Les modèles en Doctrine
3
Symfony 2.0 Les modèles = Les entités ORM (Object-Relational Mapping ) : Fait la relation
entre les données orientées objet et les données relationnelles.
Les Entités sont des classes métiers qui décrivent chaque objet de notre application.
4
Doctrine 2 , EntityManger et repository 5
$doctrine = $this->getDoctrine ()
$em = $doctrine->getEntityManager()
$em->getRepository(‘GestionProduitsBunle: Produit’)
$em->getRepository(‘GestionProduitsBunle:Categorie’)
Produit 1 Produit 2Categorie
1Categorie
2
Doctrine est un service qui gère : La connexion avec la base de données Le gestionnaire d'entités (EntityManager)
EntityManager permet de : gérer la persistance des objets exécuter les requêtes SQL
Les Repository récupèrent les entités depuis la base de donnéesil en existe un par entité.
Créer une entité (Modèle)
Pour matérialiser les tables en BDD , il faut Créer
l’entité : :
php app/console doctrine:generate:entity
6
Créer une entité (Modèle)7
Entité : Liaison vers la table8
Créer une entité (Modèle)Ce n’est pas encore finis :
1- Configurer les informations de BDD dans le fichier
app/config/parametrs.ini
2- s’assurer que le paramètre auto_mapping est à true Dans le fichier
app/config/config.yml
3- Création de la bdd : php app/console doctrine:databse:create
4- Génération des tables : php app/console doctrine:schema:create
NB: Modification des tables possible via la commande
php app/console doctrine:schema:update --force
9
Relation entre entités
Notion de propriétaire et d’inverse
Relation à sens unique ou à double sens
Unidirectionnalité et de Bidirectionnalité
Exemple
10
Référence des annotations possibles :
http://docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html
Relation entre entités : OneToMany
NB : Obligatoirement dans l’entité target il faut avoir une définition d’attribut avec le mot clé ManyToOne
11
targetEntity : L’entité en relation avec l’entité en question
mappedBy : il s’agit de l’attribute de l’entité cible qui illustre la relation entre les deux entités
Relation entre entités : ManyToOne
NB : Obligatoirement dans l’entité target il faut avoir une définition d’attribut avec le mot clé OneToMany
12
targetEntity : L’entité en relation avec l’entité en question
inversedBy : il s’agit de l’attribute de l’entité cible qui illustre la relation entre les deux entités
Relation entre entités : ManyToMany
13
targetEntity : L’entité en relation avec l’entité en question
inversedBy : il s’agit de l’attribute de l’entité cible qui illustre la relation entre les deux entités
Enregistrer des données en Base
1- Instancier un objet de la classe d’entité :
2- Enregistrer en base de donnée
14
Récupérer des données à partir d’une entité 1/3 1
5
Exécuter une requête SQL
Récupérer l’article d’id 5
Récupérer des données à partir d’une entité 2/3
Récupérer tous les enregistrements
Définir des conditions de requêtes
16
Récupérer des données à partir d’une entité 3/3 1
7
Utiliser les « Query builder »