Il n'y a aucune raison d'avoir plus d'un tableau pour les "catégories", qu'il s'agisse d'une catégorie de niveau supérieur ou d'une sous-catégorie. Ce ne sont que des "catégories".
Donc, ayez une seule table appelée "categories", avec un parent_id
champ :
// categories table
id
name
user_id
parent_id
Lorsque vous souhaitez extraire toutes les catégories de niveau supérieur, exécutez simplement votre requête sur les categories
table avec une condition parent_id
est nul.
Ensuite, lorsque vous souhaitez extraire des sous-catégories, exécutez simplement la requête sur les categories
table avec une condition parent_id = 123
(ou autre).
Non seulement cela garde tout beaucoup plus propre, mais cela permet également une expansion au cas où vous voudriez continuer à ajouter des sous-sous-sous-sous-catégories... etc.
Une autre option consiste à utiliser CakePHP's TreeBehavior .
Personnellement, j'utilise plutôt la méthode que j'ai suggérée ci-dessus, mais c'est peut-être simplement parce que je n'ai pas pris le temps de vraiment comprendre suffisamment ce comportement.