Er is geen reden om meer dan één tabel voor "categorieën" te hebben, of het nu een categorie op het hoogste niveau of een subcategorie is. Het zijn allemaal "categorieën".
Zorg dus voor een enkele tabel genaamd "categorieën", met een parent_id
veld:
// categories table
id
name
user_id
parent_id
Als u alle categorieën op het hoogste niveau wilt ophalen, voert u uw zoekopdracht uit met de categories
tabel met een voorwaarde dat parent_id
is nul.
Als u vervolgens subcategorieën wilt ophalen, voert u de query uit op de categories
tabel met een voorwaarde dat parent_id = 123
(of wat dan ook).
Dit houdt niet alleen alles een stuk overzichtelijker, maar het maakt ook uitbreiding mogelijk voor het geval je door wilt gaan met het toevoegen van sub-sub-sub-subcategorieën... enz.
Een andere optie is om CakePHP's TreeBehavior te gebruiken .
Persoonlijk gebruik ik liever de manier die ik hierboven suggereerde, maar het kan zijn dat ik niet de tijd heb genomen om dit gedrag echt genoeg te begrijpen.