Alors, on va essayer de prendre les choses dans l'ordre.
Tu mélanges controller et model, du coup petit rappel simpliste :
- Controller c'est pour gérer la partie logique de ton code.
- Model c'est pour gérer l'accès aux données.
En partant sur ce principe, il te fait créer un model pour accéder à tes compétences et le joindre aux catégories.
- categories hasMany competences (skills en anglais) => dans ton Model Category
- competences belongsTo categories => dans ton Model Competence
Enfin dernière chose sur les Models, il faut que tu rajoutes le Behavior Containable dans Category :
public $actsAs = array('Containable');
Du coup quand tout ça est "ok", il te suffit de faire dans ton controller :
$this->set('Categories', $this->Category->find('all', array('contain' => 'Competence')));
Et dans ta vue tu gardes ta boucle pour $Categories, et pour chaque $category tu auras un tableau Competence ($category['Competence']), il te suffit de faire un foreach dessus pour avoir tes competences associées à la catégorie.
Désolé je n'ai pas pu me relire, il y a certainement des erreurs.
Je reste dispo pour t'aider :)
Bon courage