Bonjour,
L'inconvénient avec une telle récursivité, c'est que l'on risque de récupéré plein de données qui ne vont pas servir au final.
Je pense qu'il vaut mieux passer par un contain ! Au moins, c'est toi qui définit qu'est ce que tu veux récupérer, dans quel ordre, tout ça quoi.
Donc comme le disais Lartak11 et Inspirat, ajoute dans ton model Course :
public $actAs = ('Containable');
public $hasMany = ['Part'];
Ainsi que dans le model Part :
public $haMany = ['Chapter'];
Et ensuite tu peux réaliser ta requete :
$this->Course->contain(
'Part' => [
'Chapter' => [
'fields' => ['id', 'name', 'slug', '....']
]
]
);
$this->Course->findById($id_course);
Après c'est la meilleur chose pour moi, peut être que je me trompe ... :)