Tidak ada alasan untuk memiliki lebih dari satu tabel untuk "kategori", apakah itu kategori tingkat atas atau sub-kategori. Semuanya hanyalah "kategori".
Jadi, buat satu tabel bernama "kategori", dengan parent_id
bidang:
// categories table
id
name
user_id
parent_id
Saat Anda ingin menarik semua kategori tingkat atas, jalankan kueri Anda terhadap categories
tabel dengan syarat parent_id
adalah nol.
Kemudian, ketika Anda ingin menarik subkategori, jalankan kueri terhadap categories
tabel dengan ketentuan parent_id = 123
(atau apa pun).
Ini tidak hanya menjaga semuanya jauh lebih bersih, tetapi juga memungkinkan perluasan jika Anda ingin terus menambahkan sub-sub-sub-sub kategori...dll.
Pilihan lainnya adalah dengan menggunakan TreeBehavior CakePHP .
Saya pribadi lebih suka menggunakan cara yang saya sarankan di atas, tetapi mungkin saja karena saya belum meluangkan waktu untuk benar-benar memahami perilaku ini.