Bonjour,
Comme le titre l'indique, j'ai un petit problème d'enregistrement récursif. Je créer un arbre d'objet et le niveau le plus bas n'est pas persisté...
Pour que ce soit simple à comprendre voici un petit schéma de class simplifié :
Voici le schema.yml :
Et voici le code d'exemple :
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 CartoMap: {} CartoEquipment: columns: carto_map_id: {type: integer} name: {type: string(255), notnull: true} relations: CartoMap: {onDelete: CASCADE, onUpdate: CASCADE, foreignAlias: cartoEquipmentList} CartoBeam: columns: equipment_a: {type: integer, notnull: true} equipment_b: {type: integer} load_value: {type: integer} real_b_number: {type: string(255)} relations: equipment_a: {class: CartoEquipment, local: equipment_a, onDelete: CASCADE, onUpdate: CASCADE, foreignAlias: cartoBeamList} equipment_b: {class: CartoEquipment, local: equipment_b, onDelete: CASCADE, onUpdate: CASCADE, foreignAlias: cartoInsideBeamList}
L'objet Map s'enregistre sans problème, tout comme l'objet Equipment $a. Par contre l'objet Equipment $b n'est pas sauvegardé et donc l'objet Beam est sauvegardé sans référence à l'objet Equipment $b.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $map = new CartoMap(); $beam = new CartoBeam(); $a = new CartoEquipment(); $b = new CartoEquipment(); $a->setName('a'); $b->setName('b'); $beam->setEquipmentB($b); $a->getCartoBeamList()->add($beam); $map->getCartoEquipmentList()->add($a); $map->save();
Avez vous une idée pour résoudre ce problème ?
Merci d'avance.
EDIT :
Plus de problème, j'avais une erreur dans mon schema (doublon du nom des champs et des relations de l'objet CartoBeam)
Partager