====== 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.