17
1

Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

Embed Size (px)

DESCRIPTION

Troisième chapitre d'une formation Symfony 2, l'Objectif de ce chapitre peut se résumer dans les points suivants : - Présentation de l'ORM Doctrine 2 - Génération d'entité et utiliser les annotations pour modéliser une base de donnée relationnelle - Écriture et Lecture des données.

Citation preview

Page 1: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

1

Page 2: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

ABDELKADER RHOUATI

[email protected]

COURS SF 2.0 - 2013

Symfony 2.02

Page 3: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

Chapitre 3 : Les modèles en Doctrine

3

Page 4: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

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

Page 5: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

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é.

Page 6: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

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

Page 7: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

Créer une entité (Modèle)7

Page 8: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

Entité : Liaison vers la table8

Page 9: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

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

Page 10: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

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

Page 11: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

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

Page 12: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

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

Page 13: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

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

Page 14: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

Enregistrer des données en Base

1- Instancier un objet de la classe d’entité :

2- Enregistrer en base de donnée

14

Page 15: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

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

Page 16: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

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

Page 17: Symfony 2 : chapitre 3 - Les modèles en Doctrine 2

Récupérer des données à partir d’une entité 3/3 1

7

Utiliser les « Query builder »