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 :

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}
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
 
$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();
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.

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)