Ada beberapa solusi jika ditemukan untuk yang pertama ini lebih rumit tetapi akan memberikan kinerja yang lebih baik:
Yang ini tentang menerapkan struktur data hierarkis di MySQLI seperti panduan di sini
http://mikehillyer.com/articles/managing-hierarchical-data- di-mysql/
Yang bernama The Nested Set Model.
Solusi kedua yang sebenarnya saya terapkan sendiri adalah perluasan rekursif, yang ini menggunakan banyak permintaan mysql dan saya yakin dapat ditingkatkan, tetapi ini cepat dan berfungsi dengan baik. Soalnya pakai fungsi tiap kategori seperti ini
var expandSubcategories = function (category) {
return new promise(function (resolve, reject) {
category.getSubcategories().then(function (subcategories) {
//if has subcategories expand recursively inner subcategories
if (subcategories && subcategories.length > 0) {
var expandPromises = [];
_.each(subcategories, function (subcategory) {
expandPromises.push(expandSubcategories(subcategory));
});
promise.all(expandPromises).then(function (expandedCategories) {
category.subcategories = [];
_.each(expandedCategories, function (expandedCategory) {
category.subcategories.push(expandedCategory);
}, this);
//return self with expanded inner
resolve(category);
});
} else {
//if has no subcategories return self
resolve(category);
}
});
});
};
Jadi itu melalui kategori dan mengembangkannya secara rekursif.
Mungkin ini akan membantu seseorang juga.