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) :

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;
 
    ...
 
}
 
?>
Seulement je dois créer les trois entités en même temps.

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 :

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;
Sauf que ça ne marche pas, j'ai l'erreur suivante :

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Sur la requète suivante :

INSERT INTO Assoc (value, object_id, details_id) VALUES (?, ?, ?) ({"1":16})
Alors je vois bien que seule la valeur a été indiquée dans les valeurs, mais comment ajouter les autres ?

J'ai déjà essayé de bouger les persist et les flush, mais sans résultat différent...

Merci d'avance !