Rekursiver Kategorieabruf mit einer einzigen MySQL-Abfrage
In Webanwendungen ist die Organisation von Inhalten in hierarchische Kategorien üblich. Eine komplexe Kategoriestruktur, beispielsweise ein Baum, erfordert beim Abruf eine spezielle Handhabung. In diesem Artikel wird der effizienteste Weg untersucht, rekursive Kategorien mit einer einzigen MySQL-Abfrage abzurufen.
Der Aufbau des Kategoriebaums in PHP mithilfe von Referenzen optimiert den Prozess. Eine Abfrage ruft Kategorien und ihre übergeordneten IDs ab, die in einem assoziativen Array ($nodeList) gespeichert werden. Das Array ist so strukturiert, dass hierarchische Referenzen erstellt werden, bei denen das übergeordnete Element jedes Knotens in seinem „übergeordneten“ Schlüssel erscheint.
Die Baumkonstruktion erfolgt im folgenden Code:
foreach ($nodeList as $nodeId => &$node) { if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) { $tree[] = &$node; } else { $nodeList[$node['parent']]['children'][] = &$node; } }
Diese Schleife iteriert über die Knoten , und wenn ein Knoten keinen übergeordneten Knoten hat oder der übergeordnete Knoten nicht im Array vorhanden ist, wird der Knoten dem $tree-Array hinzugefügt. Andernfalls wird der Knoten als Kind zum „Children“-Array seines Elternknotens hinzugefügt.
Das Ergebnis ist eine hierarchische Baumstruktur, die im $tree-Array gespeichert ist, wobei jeder Knoten Kinderreferenzen enthält. Dieser Einzelabfrage-Ansatz ist deutlich schneller als die Verwendung rekursiver MySQL-Abfragen, selbst für große Kategoriebäume.
Das obige ist der detaillierte Inhalt vonWie rufe ich rekursive Kategorien in einer einzelnen MySQL-Abfrage ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!