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

Preview:

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

1

ABDELKADER RHOUATI

ABDELKADER.RHOUATI@GMAIL.COM

COURS SF 2.0 - 2013

Symfony 2.02

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 »