Bonjour, voici rapidement mon schema.
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
 
# TEF INSCRIPTION
 
inscriptiontef:
  actAs:
    Timestampable:
  columns:
    nom:
      type:           string(225)
    prenom:
      type:           string(225)
    datenaissance:
      type:           datetime
    lieunaissance:
      type:           string(225)
    ...
 
    languematernelle:
      type:           string(225)
  relations:
    buttef:
      class: buttef
      refClass: tefbut
      foreign: inscriptiontef
 
#but tef
 
buttef:
  columns:
    nom:      string(225)
 
 
# tef but: reuni inscriptiontef et buttef pour la relation plusieurs a plusieurs
 
tefbut:
  columns:
    inscriptiontef_id:
      type: integer
      primary: true
    buttef_id:
      type: integer
      primary: true
  relations:
    inscriptiontef:
      foreignAlias: tefbut
      onDelete: cascade
    buttef:
      foreignAlias: tefbut
      onDelete: cascade
Bref, "buttef" comporte plusieurs "buts" préenregistrés parmi lesquels le candidat choisit en remplissant le formulaire auto généré sur la base de la table "inscriptiontef". Dans le configure dudit formulaire (inscriptiontefForm), j'ai configuré le champ correspondant comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
'buttef_list'      => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'expanded' => true, 'model' => 'buttef')),
Donc à l'affichage, le formulaire présente bien les checkbox des choix de but disponible. Le problème, c'est qu'à la soumission du formulaire, ca renvoie l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`isfopnew`.`tefbut`, CONSTRAINT `tefbut_buttef_id_buttef_id` FOREIGN KEY (`buttef_id`) REFERENCES `buttef` (`id`) ON DELETE CASCADE)
D'après les recherches que j'ai faites, le problème proviendrait du moteur de la base de donnée, mais j'ai vérifié et toutes les tables sont en InnoDB comme cela devrait être. Alors je ne sais plus quoi faire. Quelqu'un connait-il la solution à ce problème ? Merci.