Activité : Doctrine et les relations - SimplonReunion/developpeur-web GitHub Wiki

Objectif

Votre objectif et de faire la relation entre les différentes entités.

Tout d'abord, dans une base de données dites relationnel c'est possible de créer des liens entre les tables. Par exemple entre une table livre et une table auteur il y a un lien de type 1 à plusieurs : 1 auteur peut écrire plusieurs livres et 1 livre peut être écrit par 1 seul auteur.

Vous pouvez aussi tomber sur des relations dites de plusieurs à plusieurs. Par exemple, dans un blog, plusieurs articles peuvent être dans plusieurs catégories.

Une fois ces liens créés c'est le moteur de la base de données qui va gérer l'intégrité, si tout est conforme. Il vous laissera pas, par exemple, créer un livre si vous n'avez pas d'auteur.

En MySQL c'est un système avec clé primaire/clé étrangère qui gère ça.

Thèmes abordés :

  • Créer une entité pour Doctrine
  • Comprendre les annotations de Doctrine ORM qui permettent à Doctrine de faire le lien avec la base de données
  • Créer et mettre à jour le schéma de la base de données selon les annotations Doctrine ORM
  • Mettre en place les relations entre les entités en utilisant les annotations Doctrine ORM
  • Comprendre l'utilisation des relations OneToMany, ManyToOne, OneToOne, ManyToMany
  • Faire le lien entre les entités selon les relations définit
  • Utiliser l'entity manager de Doctrine pour persist (sauvegarder) plusieurs entités d'un coup

Doctrine et les relations entre entités

Doctrine étant bien fait il permet de mettre en place des relations entre les entités.

Encore une fois on va utiliser les annotations pour le faire.

Après avoir fait le tuto, faites l'activité suivante.

Activité

Créer les entités Doctrines suivantes Equipes, Joueurs, Matchs et leurs relations telles que :

  • 1 équipe peut avoir plusieurs joueurs
  • 1 joueur ne peut faire parti que d'une seule équipe
  • 1 match se joue entre 2 équipes

Pour débuter on estimera que la dernière règle peut être assimilée à une relation d'un à plusieurs même si c'est en réalité c'est une relation de plusieurs à plusieurs

Quand vous avez terminé de créer les entités et mis à jour le schéma de votre base, vérifier sa validité grâce à la commande :

bin/console doctrine:schema:validate

Il ne doit pas avoir de rouge !

Cette étape passée, vous pouvez maintenant tester en essayant d'insérer des éléments.

Écrivez votre code dans un controller. Dans un premier temps, pas la peine de faire un formulaire.

Dans la même action, vous devez créer 2 équipes, 12 joueurs (6 par équipes) et 1 match.

Aller plus loin

Utilisez des formulaires pour pouvoir créer des joueurs, des équipes et des matchs.