====== Création d'une Relation en ligne de commande ====== Doc: [[https://symfony.com/doc/current/doctrine/associations.html]] ===== Création d'une relation OneToMany ===== Entité existante : **Article**. Création d'une nouvelle entité **Category** liée à l'entité **Article**. php bin/console make:entity Nom de la classe : **Category** Entrer les propriétés de la classe, comme **title**, **description**, etc… Ensuite, ajouter une propriété **articles** de type **relation**, et répondre aux questions : ==== Entité liée ==== ''What class should this entity be related to ? **Article**'' ==== Type de relation ==== ''Relation type ? [ManyToOne, OneToMany, ManyToMany, OneToOne]'' Selon les exemples proposés, on est dans le cas **OneToMany** : ^ OneToMany | Each **Category** relates to **many Article** objects. | | | Each **Article** relates to **one Category**. | ==== Champ ajouté dans l'entité liée ==== ''New field name inside Article: **category**'' ''Nullable ? **no**'' ''Automatically delete orphaned ? **no**'' ==== Changements effectués au niveau des classes ==== Classe Article : class Article { ... /** * @ORM\ManyToOne(targetEntity="App\Entity\Category", * inversedBy="articles") * @ORM\JoinColumn(nullable=false) */ private $category; ... } Classe Category : class Category { ... /** * @ORM\OneToMany(targetEntity="App\Entity\Article", * mappedBy="category") */ private $articles; ... } Il faut lire les relations comme ceci : * Dans la classe **Article**, on a une relation **ManyToOne**, parce que **Many** Articles **To One** Category. * Dans la classe **Category**, on a une relation **OneToMany**, parce que **One** Category **To Many** Articles.