Bonjour,

J'ai modélisé une relation many to many avec attributs de cette manière:

L'entité: DossierTransport
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'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
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;
 
...
}
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
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;
 
..}
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
 
	$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();
 
	}
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.


Je me demande est ce dois-je ajouter quelque chose dans le contrôleur pour remédier à ça?

Merci