Je pense qu'il ne faut pas utilisé HABTM pour des relation (1-n).
si j'ai bien compris tu a 3 relations (1-n) :
si j'en prends une :
les enseignants ONT_PLUSIEURS modules?
les modules APPARTIENNENT à un enseignant?
implique :
- Enseignant : hasMany = array('Module');
- Module : belongsTo = array('Enseignant');
à faire 3 fois pour tes 3 relation (1-n)