Bonjour,
J'ai fais quelques heures de recherches en vain pour résoudre mon problème.
J'ai trois entités :
Details
Object
Assoc
Les entités Details et Object ignorent la présence des autres entités, seule l'entité Assoc est définie comme suit (avec les getter et les setter) :
Seulement je dois créer les trois entités en même temps.
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 /** * ...\Entity\Assoc * * @ORM\Table() * @ORM\Entity(repositoryClass="...\Entity\AssocRepository") */ class Assoc { /** * @var integer $id * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var float $value * * @ORM\Column(name="value", type="float") */ private $value; /** * @ORM\Id * @ORM\ManyToOne(targetEntity="...\Entity\Object", cascade={"persist"}) */ private $object; /** * @ORM\Id * @ORM\ManyToOne(targetEntity="...\Entity\Details", cascade={"persist"}) */ private $details; ... } ?>
Donc je crée une entité Object, une entité Details, et enfin une entité Assoc en lui indiquant les deux autres entités via les setters :
Sauf que ça ne marche pas, j'ai l'erreur suivante :
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 $object = new Object; ... $details = new Details; ... $this->em->persist($details); $assoc = new Assoc; $assoc->setObject($object); $assoc->setDetails($details); $this->em->persist($assoc); $this->em->flush; $this->em->persist($object); $this->em->flush;
Sur la requète suivante :SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Alors je vois bien que seule la valeur a été indiquée dans les valeurs, mais comment ajouter les autres ?INSERT INTO Assoc (value, object_id, details_id) VALUES (?, ?, ?) ({"1":16})
J'ai déjà essayé de bouger les persist et les flush, mais sans résultat différent...
Merci d'avance !
Partager