Có một số giải pháp nếu được tìm thấy cho giải pháp đầu tiên này phức tạp hơn nhưng sẽ cho hiệu suất tốt hơn:
Đây là phần về triển khai cấu trúc dữ liệu phân cấp trong MySQLI như hướng dẫn ở đây
http://mikehillyer.com/articles/managing-hierarchical-data- trong mysql /
Mô hình được đặt tên là Mô hình tập hợp lồng nhau.
Giải pháp thứ hai mà tôi thực sự tự thực hiện là mở rộng đệ quy, giải pháp này sử dụng rất nhiều yêu cầu mysql và tôi tin rằng có thể được cải thiện, nhưng nó là một giải pháp nhanh và hoạt động tốt. Vấn đề là sử dụng cho từng chức năng danh mục như thế này
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);
}
});
});
};
Vì vậy, nó sẽ đi qua các danh mục và mở rộng chúng một cách đệ quy.
Có thể điều này cũng sẽ giúp ích cho ai đó.