Framework Symfony

Association un à un-One To One

Au lieu de travailler avec les clés étrangères dans votre code, vous travaillerez toujours avec des références à des objets et Doctrine convertira ces références à des clés étrangères en interne.

Une référence à un seul objet est représentée par une clé étrangère.

Une collection d'objets est représentée par de nombreuses clés étrangères pointant vers l'objet de maintien de la collection

Pour décrire tous les concepts de travail avec l’associations OneToOne, nous introduisons un ensemble spécifique d'entités par exemple qui montrent toutes les différentes saveurs de la gestion des associations dans la doctrine.

Pour représenter les associations nous allons travailler avec les annotations ;

Dans un premier temps, le lien vers la page de la documentation de Doctrine en ce qui concerne les annotations : documentation officielle

Pour ceux qui ne sont pas familiarisé avec les annotations, cette technique propre au Java où cette méthode de configuration est intégrée au spécification du langage (contrairement à PHP).

Donc les annotations sont bêtement des commentaires construit de manière rigoureuse qui vont servir à la configuration. Cela remplace un fichier XML ou YAML.


1-Un à un , Bidirectionnel

Prenons l’exemple suivant :



class Personne {                           
/**                                    
* @var int                                    
* @ORM\Column(name="id", type="integer")                                    
* @ORM\Id                                    
* @ORM\GeneratedValue(strategy="AUTO")                                      
*/                                     
private $id;                                 

/**                                             
* @var string                                             
* @ORM\Column(name="nom", type="string", length=30)                                             
*/                                            
private $nom;                                    


/**                                             
* @var string                                             
* @ORM\Column(name="prenom", type="string", length=30)                                                           
*/
private $prenom;                                            

/**                                     
* @var \DateTime                                         
* @ORM\Column(name="datenaissance", type="date")                                         
*/                                        
private $datenaissance;                                                      


/**                                        
* @ORM\OneToOne(targetEntity="Passeport", inversedBy="personne")                                        
* @ORM\JoinColumn(name="passeport_id", referencedColumnName="id")                                        
*/                                        
private $passeport;                                                
...                                   
}

class Passeport{                                    
/**                                     
* @var int                                     
* @ORM\Column(name="id", type="integer")                                     
* @ORM\Id                                     
* @ORM\GeneratedValue(strategy="AUTO")                                     
*/                              
private $id;    

/**                                     
* @var \DateTime                                     
* @ORM\Column(name="date_livraison", type="date")                                     
*/                                    
private $dateLivraison;                                 

/**                                     
* @var \DateTime                                     
* @ORM\Column(name="date_expiration", type="date")                                     
*/                                    
private $dateExpiration;     

/**                                    
* @ORM\OneToOne(targetEntity="Personne", mappedBy="passeport")                                    
*/                                    
private $personne;                                    
…                                
}


2-Un à un , reflexive


class Personne {                             
/**                                      
* @var int                                      
* @ORM\Column(name="id", type="integer")                                      
* @ORM\Id                                      
* @ORM\GeneratedValue(strategy="AUTO")                                      
*/                                     
private $id;                                                   


/**                                      
* @var string                                      
* @ORM\Column(name="nom", type="string", length=30)                                     
*/                                     
private $nom;                                                   


/**                                      
* @var string                                      
* @ORM\Column(name="prenom", type="string", length=30)                                      
*/                                     
private $prenom;                                                   


/**                                      
* @var \DateTime                                      
* @ORM\Column(name="datenaissance", type="date")                                      
*/                                     
private $datenaissance;                                                   


/**                                     
* @ORM\OneToOne(targetEntity="Personne", mappedBy="epoux")                                     
*/                                     
private $epouse;   

/**                               
* @ORM\OneToOne(targetEntity="Personne", inversedBy="epouse")                                     
* @ORM\JoinColumn(name="epouse_id", referencedColumnName="id")                                     
*/                                     
private $epoux;                                     
…                                
}
Partager ce cours avec tes amis :
Rédigé par Mostafa Sedoki
Professeur d'Informatique dans les CPGE

Cours Similaires :