Es gibt nur wenige Lösungen, die dafür gefunden werden. Die erste ist komplizierter, bietet aber eine bessere Leistung:
Hier geht es um die Implementierung einer hierarchischen Datenstruktur in MySQLI wie in der Anleitung hier
http://mikehillyer.com/articles/managing-hierarchical-data- in-mysql/
Dasjenige mit dem Namen The Nested Set Model.
Die zweite Lösung, die ich tatsächlich selbst implementiert habe, ist die rekursive Erweiterung, diese verwendet viele MySQL-Anfragen und ich glaube, dass sie verbessert werden kann, aber sie ist schnell und funktioniert gut. Die Sache ist, für jede Kategorie eine solche Funktion zu verwenden
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);
}
});
});
};
Also geht es die Kategorien durch und erweitert sie rekursiv.
Vielleicht hilft das auch jemandem.