Bonjour,
Avant tout, on va recentrer un peu le sujet en collant les bons termes aux bons endroits d'après les liaisons que tu nous expose.
- Reunion hasOne Pilote, hasMany Action
- Action belongsTo Reunion, hasOne Pilote
Puisque si j'ai bien compris, les actions ne peuvent appartenir qu'à une seule réunion. Sinon, il faudrait partir sur un hasAndBelongsToMany.
La question à se poser à ce moment là, c'est s'il n'y a pas un principe d'héritage ? De ce que je vois en l'état actuel, si la réunion a un pilote, alors les actions liées à la réunion vont appartenir au même pilote. Du coup, est-ce bien nécessaire d'établir à nouveau cette liaison dans le model Actions ? Tu pourrais simplement te baser sur le pilote de la réunion. Mais c'est de l'optimisation, ça n'est pas fondamental.
De là tu devrais donc avoir les tables suivantes :
reunions : id, name, pilote_id (et d'autres champs nécessaire à ton model)
pilotes : id, firstname, lastname (et d'autres champs nécessaire à ton model)
actions : id, name, reunion_id, pilote_id (ceci si tu conserve l'idée selon laquelle une action appartient à un pilote qui peut être différent de celui de la réunion) et d'autres champs nécessaire à ton model
En procédant comme cela, tes liaisons sont prêtes à fonctionner.
A partir de là, il va falloir que tu utilises le comportement containable afin de récupérer les models liés à ton model.
Du coup, le find de ta function voir() dans ton ActionsController pourrait ressembler à ça :
function voir($id) {
$this->Reunion->contain('Pilote', 'Action'); // Cette ligne peut être facultative si tu as un haut niveau de récursivité dans ton containable.
$this->set('Reunion', $this->Reunion->find('all'));
}
Ainsi, tu auras directement ta réunion, ton pilote, et toutes les actions liées à ta réunion.
Dans ton contain tu pourrais même ajouter 'Action.Pilote' pour récupérer en plus le pilote de chacune des actions.
Bon courage ;)