Bonjour,
J'ai modélisé une relation many to many avec attributs de cette manière:
L'entité: DossierTransport
L'entité: DossierTransportProduit
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 /** * @ORM\Entity * @ORM\Table(name="dossiertransport") */ class DossierTransport { ......... /** * * @ORM\OneToMany(targetEntity="DossierTransportProduit", mappedBy="dossiertransport", cascade={"persist"}) * @Assert\NotBlank(message = "items ne doit pas etre vide") */ protected $items; ........... }
L'entite Produit
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 /** * @ORM\Entity * @ORM\Table(name="dossiertransportproduit") */ class DossierTransportProduit { .... /** * * @ORM\ManyToOne(targetEntity="DossierTransport", inversedBy="items") * */ protected $dossiertransport; /** * @ORM\ManyToOne(targetEntity="Produit") * @ORM\JoinColumn(nullable=false) */ private $produit; ... }
et dans le contrôleur j'ai:
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 /** * @ORM\Entity * @ORM\Table(name="produit") */ class Produit { /** * @var integer * * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ protected $id; /** * * @ORM\Column(type="string") * @Assert\NotBlank() * @Assert\MinLength(5) */ protected $reference; ..}
Après validation les données s’enregistre dans les trois tables sauf que dans la table de liaison "dossiertransportproduit" l'id "dossiertransport_id"(clé étrangère: id dossiertansport) j'ai la valeur NULL.
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 $form = $this->container->get('form.factory')->create(new DossierTransportFormType(), $dossiertransport); $request = $this->container->get('request'); if ($request->getMethod() == 'POST') { $form->bindRequest($request); //$form2->bindRequest($request); if ($form->isValid()) { $em->persist($dossiertransport); $em->flush(); }
Je me demande est ce dois-je ajouter quelque chose dans le contrôleur pour remédier à ça?
Merci
Partager