Bonjour,
je suis un débutant sous Symfony 4 et je suis bloqué sur un exercice que l'on m'a donné. L'exercice est le suivant : je dois mettre en place les relations manquantes en fonction du diagramme de classe (je vous met toutes les informations ci-dessous).
Pour réaliser ses relations manquantes, on m'a fournis un projet Symfony avec les différents fichiers contenant les entités. Les variables sont déjà déclarés dans les fichiers en question, et je dois remplir les ORM. Cependant, je suis perturbée à propos de ce diagramme de classe. Par exemple, entre "Pizza" et "IngredientPizza", la relation est un OneToMany partant de "Pizza" vers "IngredientPizza", mais je n'arrive pas à mettre en place cette relation.
Ma question est donc la suivante : quelqu'un peut-il m'expliquer comment mettre en place la relation entre la table "Pizza" et "IngredientPizza" ?
Je vous met le code des fichiers "IngredientPizza.php" et "Pizza.php" afin que vous ayez toutes les ressources nécéssaire.
Entity\Pizza.php
Entity\IngredientPizza.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 <?php declare(strict_types = 1); namespace App\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Table(name="pizza") * @ORM\Entity(repositoryClass="App\Repository\PizzaRepository") */ class Pizza { /** * @var int * @ORM\Column(name="id_pizza", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * @ORM\Column(name="nom", type="string", length=255, unique=true) */ private $nom; /** * @var Collection */ private $quantiteIngredients; /** * Constructor */ public function __construct() { $this->quantiteIngredients = new ArrayCollection(); } /** * @return int */ public function getId(): ?int { return $this->id; } /** * @param int $id * @return Pizza */ public function setId(int $id): Pizza { $this->id = $id; return $this; } /** * @return string */ public function getNom(): ?string { return $this->nom; } /** * @param string $nom * @return Pizza */ public function setNom(string $nom): Pizza { $this->nom = $nom; return $this; } /** * @param IngredientPizza $quantiteIngredients * @return Pizza */ public function addQuantiteIngredients(IngredientPizza $quantiteIngredients): Pizza { $this->quantiteIngredients[] = $quantiteIngredients; return $this; } /** * @param IngredientPizza $quantiteIngredients */ public function removeQuantiteIngredient(IngredientPizza $quantiteIngredients): void { $this->quantiteIngredients->removeElement($quantiteIngredients); } /** * @return Collection */ public function getQuantiteIngredients(): Collection { return $this->quantiteIngredients; } }
Il y a d'autres relations à mettre en place, comme celle entre la table "Pizzeria" et "Pizza", mais je préfère que l'on s'y interesse une fois que j'aurais compris la première relation entre la table "Pizza" et "IngredientPizza".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 <?php declare(strict_types = 1); namespace App\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Table(name="nombre_ingredient_par_pizza") * @ORM\Entity(repositoryClass="App\Repository\IngredientPizzaRepository") */ class IngredientPizza { /** @var float */ const GRAMME_VERS_KILO = 0.001; /** * @var int * @ORM\Column(name="id_ingredient_pizza", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * La quanité de l'ingrédient en gramme * @var int * @ORM\Column(name="quantite", type="integer") */ private $quantite; /** * @var Ingredient * @ORM\ManyToOne(targetEntity="App\Entity\Ingredient") * @ORM\JoinColumn( * name="ingredient_id", * referencedColumnName="id_ingredient" * ) */ private $ingredient; /** * @param float $grammes * @return float */ public static function convertirGrammeEnKilo($grammes) { return (float) $grammes * self::GRAMME_VERS_KILO; } /** * @return int */ public function getId(): ?int { return $this->id; } /** * @param int $id * @return IngredientPizza */ public function setId(int $id): IngredientPizza { $this->id = $id; return $this; } /** * @return int */ public function getQuantite(): ?int { return $this->quantite; } /** * @param int $quantite * @return IngredientPizza */ public function setQuantite(int $quantite): IngredientPizza { $this->quantite = $quantite; return $this; } /** * @return Ingredient */ public function getIngredient(): ?Ingredient { return $this->ingredient; } /** * @param Ingredient $ingredient * @return IngredientPizza */ public function setIngredient(Ingredient $ingredient): IngredientPizza { $this->ingredient = $ingredient; return $this; } }
Je vous remercie d'avance pour votre aide, je regarderais dès que possible les réponses sur ce post (plusieurs fois par jour).
Bonne journée
Partager