PRÉSENTATION DU COURS

Créer des relations entre ses entités

Créez des relations entre les entités pour gérer facilement les relations dans vos données

Les relations Doctine dans Symfony

Les relations font parti de ce qui fait la puissance de doctrine, avec de simple attributs dans vos entités, vous allez pouvoir les lier entres elles afin de créer des relations.

Il existe plusieurs type de relations pour doctrine : (pour ce qui s'en rapelle, c'est l'équivalent d'une relation dans une bdd relationnelle type Mysql)

  • ManyToOne : Essentiellement une relation 0,N <------> 1,1
  • OneToOne : Essentiellement une relation 0,1 <------> 0,1
  • ManyToMany : Essentiellement une relation 0,N <------> 0,N

Toutes ces relations peuvent avoir plusieurs aspect (Unidirectional, Bidirectional, self-referencing), qui servent toutes à différentes chose, Unidirectional étant la plus courante.

Voilà une petite explication pour chacun des aspect :

  • Unidirectional : Relation uniquement dans une entitée, n'est pas répliquée dans l'entité associée (par exemple, pour une relation image et utilisateur, la propriété sera seulement dans utilisateur car il y a peu de chance que l'on vienne chercher un utilisateur par son image).

Vous pouvez en savoir plus sur les relations dans doctrine en consultant leur documentation

Définir une relation

Nous allons créer une petite relations avec notre table monkey, ce sont des singes en captivité, ils vivent donc dans des enclos.

Je vous laisse donc créer une entité Enclo ayant les propriété suivantes :

  • surface (em m2, ex : 550)
  • capacite : (en nombre de singes, ex : 20)
  • environnement : (ex: jungle)

Une fois fais, modifiez l'entité Monkey gràce à la commande php bin/console make:entity

Ajoutez une nouvelle propriété enclo, de type relation.

À partir de ce moment là, laissez vous guider par les questions de la commande, elles vous aidront à construire la bonne relation pour vous !

Gadez en tête que le singe ne peut apartenir qu'à un et un seul enclos, mais que les enclos peuvent contenir plusieurs !

Faites ensuite les commandes pour créer et appliquer les mises à jour et allez voir dans votre base de donnée ce qui a été créer !

...

Surprise une relation clée etrangère / clée primaire ! En effet doctrine ne fais pas de la magie, il gère les bases de données comme si c'était vous qui le faisiez manuellement (enfin peut être en mieux 😏)

Conclusion

Ici, nous avons pu voir comment créer une relation entre deux table de manière très propre en Doctrine.

Désormais, il ne nous reste plus qu'à savoir comment ça marche dans vos entités, et comment utiliser ces relations pour ajouter / enlever / récupérer les éléments des relations !

Envie de discuter du contenu ?

logo twitter @GarnierKristen