SlideShare una empresa de Scribd logo
1 de 17
1
Symfony 2.0

ABDELKADER RHOUATI
ABDELKADER.RHOUATI@GMAIL.COM
COURS SF 2.0 - 2013

2
3

Chapitre 3 :
Les modèles en Doctrine
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
Produit 1

Produit 2

$em->getRepository
(‘GestionProduitsBu
nle: Produit’)

Categorie
1

Categorie
2

$em->getRepository
(‘GestionProduitsBunle:
Categorie’)

$em = $doctrine->getEntityManager()

$doctrine = $this->getDoctrine ()

5

 Les Repository
récupèrent les entités
depuis la base de
données
il en existe un par
EntityManager permet de
entité.
:
 gérer la persistance
des objets
 exécuter les requêtes
SQL
Doctrine est un service
qui gère :
 La connexion avec la
base de données
 Le gestionnaire
d'entités (EntityManager)
Créer une entité (Modèle)
Pour

6

matérialiser les tables en BDD , il faut Créer

l’entité : :
php app/console doctrine:generate:entity
Créer une entité (Modèle)

7
Entité : Liaison vers la table

8
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



10

Relation à sens unique ou à double sens
 Unidirectionnalité et de Bidirectionnalité

Exemple

Référence des annotations possibles :
http://docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html
Relation entre entités :
OneToMany

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

NB : Obligatoirement dans l’entité target il faut avoir une définition
d’attribut avec le mot clé ManyToOne
Relation entre entités :
ManyToOne

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

NB : Obligatoirement dans l’entité target il faut avoir une définition
d’attribut avec le mot clé OneToMany
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


Exécuter une requête SQL



Récupérer l’article d’id 5

15
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


Utiliser les « Query builder »

17

Más contenido relacionado

Destacado

Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfonyJeremy Gachet
 
Introduction au business modèle des applications mobile
Introduction au business modèle des applications mobileIntroduction au business modèle des applications mobile
Introduction au business modèle des applications mobileAbdelkader Rhouati
 
Very lastroom symfony1 vers symfony2 en douceur
Very lastroom   symfony1 vers symfony2 en douceurVery lastroom   symfony1 vers symfony2 en douceur
Very lastroom symfony1 vers symfony2 en douceurSébastien Houzé
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epitaNoel GUILBERT
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentationyllieth
 
Symfony2 & l'architecture Rest
Symfony2 & l'architecture Rest Symfony2 & l'architecture Rest
Symfony2 & l'architecture Rest Ahmed Ghali
 
Dependency Injection Smells
Dependency Injection SmellsDependency Injection Smells
Dependency Injection SmellsMatthias Noback
 
PHP 5 pour les développeurs Java
PHP 5 pour les développeurs JavaPHP 5 pour les développeurs Java
PHP 5 pour les développeurs JavaMehdi EL KRARI
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEMarouan OMEZZINE
 
Créer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonySébastien Rosset
 
Formation angular js - Constellation
Formation angular js - ConstellationFormation angular js - Constellation
Formation angular js - ConstellationJérémie Campari
 
Symfony 2 : Performances et Optimisations
Symfony 2 : Performances et OptimisationsSymfony 2 : Performances et Optimisations
Symfony 2 : Performances et OptimisationsLes-Tilleuls.coop
 
Building Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJSBuilding Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJSAntonio Peric-Mazar
 
Drupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnanteDrupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnanteVanessa David
 
Design patterns avec Symfony
Design patterns avec SymfonyDesign patterns avec Symfony
Design patterns avec SymfonyMohammed Rhamnia
 
Effective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 DevelopersEffective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 DevelopersMarcin Chwedziak
 

Destacado (20)

Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfony
 
Introduction au business modèle des applications mobile
Introduction au business modèle des applications mobileIntroduction au business modèle des applications mobile
Introduction au business modèle des applications mobile
 
Very lastroom symfony1 vers symfony2 en douceur
Very lastroom   symfony1 vers symfony2 en douceurVery lastroom   symfony1 vers symfony2 en douceur
Very lastroom symfony1 vers symfony2 en douceur
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epita
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentation
 
Symfony2 & l'architecture Rest
Symfony2 & l'architecture Rest Symfony2 & l'architecture Rest
Symfony2 & l'architecture Rest
 
Dependency Injection Smells
Dependency Injection SmellsDependency Injection Smells
Dependency Injection Smells
 
PHP 5 pour les développeurs Java
PHP 5 pour les développeurs JavaPHP 5 pour les développeurs Java
PHP 5 pour les développeurs Java
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Créer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec Symfony
 
Formation angular js - Constellation
Formation angular js - ConstellationFormation angular js - Constellation
Formation angular js - Constellation
 
Symfony 2 : Performances et Optimisations
Symfony 2 : Performances et OptimisationsSymfony 2 : Performances et Optimisations
Symfony 2 : Performances et Optimisations
 
Building Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJSBuilding Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJS
 
PHP et PHP Framework
PHP et PHP FrameworkPHP et PHP Framework
PHP et PHP Framework
 
Drupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnanteDrupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnante
 
Design patterns avec Symfony
Design patterns avec SymfonyDesign patterns avec Symfony
Design patterns avec Symfony
 
Effective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 DevelopersEffective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 Developers
 

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

Chapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptxChapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptxanisanima1
 
PROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.pptPROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.pptEddySHANGA
 
Design patterns french
Design patterns frenchDesign patterns french
Design patterns frenchmeriem sari
 
Java cours n° 2 - classe-objet-constructeur
Java   cours n° 2 - classe-objet-constructeurJava   cours n° 2 - classe-objet-constructeur
Java cours n° 2 - classe-objet-constructeurAbdelwahab Naji
 
Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zinebZineb ELGARRAI
 
Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011yassine kchiri
 
Les ontologies et les graphes RDF
Les ontologies et les graphes RDFLes ontologies et les graphes RDF
Les ontologies et les graphes RDFRadhouani Mejdi
 
Poo en c++ les relations entre classes
Poo en c++ les relations entre classesPoo en c++ les relations entre classes
Poo en c++ les relations entre classesAmina HAMEURLAINE
 
Java uik-chap4-poo3
Java uik-chap4-poo3Java uik-chap4-poo3
Java uik-chap4-poo3Amel Morchdi
 
ProgrammationO.O.pptx
ProgrammationO.O.pptxProgrammationO.O.pptx
ProgrammationO.O.pptxFadelStark
 

Similar a Symfony 2 : chapitre 3 - Les modèles en Doctrine 2 (17)

Chapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptxChapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptx
 
merise (1).pdf
merise (1).pdfmerise (1).pdf
merise (1).pdf
 
Theme 10
Theme 10Theme 10
Theme 10
 
Chapitre2.pdf
Chapitre2.pdfChapitre2.pdf
Chapitre2.pdf
 
Theme 10
Theme 10Theme 10
Theme 10
 
PROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.pptPROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
 
Design patterns french
Design patterns frenchDesign patterns french
Design patterns french
 
Chapitre 3
Chapitre 3Chapitre 3
Chapitre 3
 
Java cours n° 2 - classe-objet-constructeur
Java   cours n° 2 - classe-objet-constructeurJava   cours n° 2 - classe-objet-constructeur
Java cours n° 2 - classe-objet-constructeur
 
Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zineb
 
Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011
 
Les ontologies et les graphes RDF
Les ontologies et les graphes RDFLes ontologies et les graphes RDF
Les ontologies et les graphes RDF
 
Poo en c++ les relations entre classes
Poo en c++ les relations entre classesPoo en c++ les relations entre classes
Poo en c++ les relations entre classes
 
Cours BDD.pptx
Cours BDD.pptxCours BDD.pptx
Cours BDD.pptx
 
ADO_NET_complet.pdf
ADO_NET_complet.pdfADO_NET_complet.pdf
ADO_NET_complet.pdf
 
Java uik-chap4-poo3
Java uik-chap4-poo3Java uik-chap4-poo3
Java uik-chap4-poo3
 
ProgrammationO.O.pptx
ProgrammationO.O.pptxProgrammationO.O.pptx
ProgrammationO.O.pptx
 

Más de Abdelkader Rhouati

Sept règles d’or pour parler en public
Sept règles d’or pour parler en publicSept règles d’or pour parler en public
Sept règles d’or pour parler en publicAbdelkader Rhouati
 
Initiation au développement mobile sous Android
Initiation au développement mobile sous AndroidInitiation au développement mobile sous Android
Initiation au développement mobile sous AndroidAbdelkader Rhouati
 
برنامج جمعية بسمة أمل بوجدة لسنة 2013
برنامج جمعية بسمة أمل بوجدة لسنة 2013برنامج جمعية بسمة أمل بوجدة لسنة 2013
برنامج جمعية بسمة أمل بوجدة لسنة 2013Abdelkader Rhouati
 
Réussir votre carrière - version arabe
Réussir votre carrière - version arabeRéussir votre carrière - version arabe
Réussir votre carrière - version arabeAbdelkader Rhouati
 

Más de Abdelkader Rhouati (6)

Sept règles d’or pour parler en public
Sept règles d’or pour parler en publicSept règles d’or pour parler en public
Sept règles d’or pour parler en public
 
Initiation au développement mobile sous Android
Initiation au développement mobile sous AndroidInitiation au développement mobile sous Android
Initiation au développement mobile sous Android
 
Comparaison des CMS
Comparaison des CMSComparaison des CMS
Comparaison des CMS
 
برنامج جمعية بسمة أمل بوجدة لسنة 2013
برنامج جمعية بسمة أمل بوجدة لسنة 2013برنامج جمعية بسمة أمل بوجدة لسنة 2013
برنامج جمعية بسمة أمل بوجدة لسنة 2013
 
Réussir votre carrière - version arabe
Réussir votre carrière - version arabeRéussir votre carrière - version arabe
Réussir votre carrière - version arabe
 
Réussir sa carrière
Réussir sa carrièreRéussir sa carrière
Réussir sa carrière
 

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

  • 1. 1
  • 3. 3 Chapitre 3 : Les modèles en Doctrine
  • 4. 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
  • 5. Doctrine 2 , EntityManger et repository Produit 1 Produit 2 $em->getRepository (‘GestionProduitsBu nle: Produit’) Categorie 1 Categorie 2 $em->getRepository (‘GestionProduitsBunle: Categorie’) $em = $doctrine->getEntityManager() $doctrine = $this->getDoctrine () 5  Les Repository récupèrent les entités depuis la base de données il en existe un par EntityManager permet de entité. :  gérer la persistance des objets  exécuter les requêtes SQL Doctrine est un service qui gère :  La connexion avec la base de données  Le gestionnaire d'entités (EntityManager)
  • 6. Créer une entité (Modèle) Pour 6 matérialiser les tables en BDD , il faut Créer l’entité : : php app/console doctrine:generate:entity
  • 7. Créer une entité (Modèle) 7
  • 8. Entité : Liaison vers la table 8
  • 9. 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
  • 10. Relation entre entités  Notion de propriétaire et d’inverse  10 Relation à sens unique ou à double sens  Unidirectionnalité et de Bidirectionnalité Exemple Référence des annotations possibles : http://docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html
  • 11. Relation entre entités : OneToMany 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 NB : Obligatoirement dans l’entité target il faut avoir une définition d’attribut avec le mot clé ManyToOne
  • 12. Relation entre entités : ManyToOne 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 NB : Obligatoirement dans l’entité target il faut avoir une définition d’attribut avec le mot clé OneToMany
  • 13. 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
  • 14. Enregistrer des données en Base 1- Instancier un objet de la classe d’entité : 2- Enregistrer en base de donnée 14
  • 15. Récupérer des données à partir d’une entité 1/3  Exécuter une requête SQL  Récupérer l’article d’id 5 15
  • 16. 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
  • 17. Récupérer des données à partir d’une entité 3/3  Utiliser les « Query builder » 17

Notas del editor

  1. Doctrine 2 utilise un système de transaction, la méthode flush permet d’acter toutes les persistances déjà faite